getappmap / getappmap/appmap-python

Cannot run appmap with clr package.

Open
#231 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
104
Forks
17
PR merge metrics
No merged PRs in 30d

Description

I thought I'd try out your application, but I ran into an issue early. Seems like it doesn't work with either pythonnet or clr. Below you can see I just install the two and I cannot import clr.

PS C:\Users\ericfoss\temp> pipenv graph
appmap==1.14.1
  - importlib-metadata [required: >=0.8, installed: 6.0.0]
    - zipp [required: >=0.5, installed: 3.14.0]
  - importlib-resources [required: >=5.4.0,<6.0.0, installed: 5.12.0]
  - inflection [required: >=0.3.0, installed: 0.5.1]
  - packaging [required: >=21.3,<22.0, installed: 21.3]
    - pyparsing [required: >=2.0.2,!=3.0.5, installed: 3.0.9]
  - PyYAML [required: >=5.3.0, installed: 6.0]
pythonnet==3.0.1
  - clr-loader [required: >=0.2.2,<0.3.0, installed: 0.2.5]
    - cffi [required: >=1.13, installed: 1.15.1]
      - pycparser [required: Any, installed: 2.21]
PS C:\Users\ericfoss\temp> pipenv run python
Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug  1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import clr
Failed to initialize pythonnet: System.NullReferenceException: Object reference not set to an instance of an object.
   at Python.Runtime.PythonException.TryDecodePyErr(BorrowedReference typeRef, BorrowedReference valRef, BorrowedReference tbRef)
   at Python.Runtime.PythonException.FetchCurrentOrNull(ExceptionDispatchInfo& dispatchInfo)
   at Python.Runtime.PythonException.ThrowLastAsClrException()
   at Python.Runtime.ImportHook.SetupImportHook()
   at Python.Runtime.ImportHook.Initialize()
   at Python.Runtime.Runtime.Initialize(Boolean initSigs)
   at Python.Runtime.PythonEngine.Initialize(IEnumerable`1 args, Boolean setSysArgv, Boolean initSigs)
   at Python.Runtime.PythonEngine.InitExt()
   at Python.Runtime.Loader.Initialize(IntPtr data, Int32 size)
   at Python.Runtime.PythonException.TryDecodePyErr(BorrowedReference typeRef, BorrowedReference valRef, BorrowedReference tbRef)
   at Python.Runtime.PythonException.FetchCurrentOrNull(ExceptionDispatchInfo& dispatchInfo)
   at Python.Runtime.PythonException.ThrowLastAsClrException()
   at Python.Runtime.ImportHook.SetupImportHook()
   at Python.Runtime.ImportHook.Initialize()
   at Python.Runtime.Runtime.Initialize(Boolean initSigs)
   at Python.Runtime.PythonEngine.Initialize(IEnumerable`1 args, Boolean setSysArgv, Boolean initSigs)
   at Python.Runtime.PythonEngine.InitExt()
   at Python.Runtime.Loader.Initialize(IntPtr data, Int32 size)Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "C:\Users\ericfoss\temp\.venv\lib\site-packages\appmap\wrapt\wrappers.py", line 581, in __call__
    return self._self_wrapper(self.__wrapped__, instance,
  File "C:\Users\ericfoss\temp\.venv\lib\site-packages\_appmap\importer.py", line 231, in wrapped_exec_module
    exec_module(*args, **kwargs)
  File "C:\Users\ericfoss\temp\.venv\lib\site-packages\clr.py", line 6, in <module>
    load()
  File "C:\Users\ericfoss\temp\.venv\lib\site-packages\pythonnet\__init__.py", line 144, in load
    raise RuntimeError("Failed to initialize Python.Runtime.dll")
RuntimeError: Failed to initialize Python.Runtime.dll
>>>

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with the shown Pipenv environment by running Python and importing clr. Start with appmap/wrapt/wrappers.py and _appmap/importer.py, then inspect the clr.py and pythonnet initialization shown in the traceback. Done means importing clr succeeds while AppMap is installed and enabled.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.