Open
Description
Environment
- Pythonnet version: master
- Python version: 3.7
- Operating System: Windows 10
Details
I am using a custom encoder defined in Python to work around the conversion of IList to Python lists (see #963 (comment)):
# Prevent Python.NET from converting IList to Python lists
from Python.Runtime import PyObjectConversions
from Python.Runtime.Codecs import RawProxyEncoder
class ListAsRawEncoder(RawProxyEncoder):
__namespace__ = 'Python.Runtime.Codecs'
def CanEncode(self, clr_type):
return clr_type.Name == 'IList`1' and clr_type.Namespace == 'System.Collections.Generic'
list_encoder = ListAsRawEncoder()
PyObjectConversions.RegisterEncoder(list_encoder)
This works fine until I have called Python.Runtime.PythonEngine.Shutdown
, and GC kicks in. Then there is this exception:
Unhandled exception
Exception thrown:
System.InvalidOperationException: Handle is not initialized.
at System.Runtime.InteropServices.GCHandle.Free()
at Python.Runtime.PythonDerivedType.Finalize(IPythonDerivedType obj)
at Python.Runtime.Codecs.ListAsRawEncoder.Finalize()
The crash started happening after #958 was merged.
Metadata
Metadata
Assignees
Labels
No labels