Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot run appmap with clr package. #231

Open
fossum opened this issue Feb 24, 2023 · 4 comments
Open

Cannot run appmap with clr package. #231

fossum opened this issue Feb 24, 2023 · 4 comments

Comments

@fossum
Copy link

fossum commented Feb 24, 2023

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
>>>
@brikelly
Copy link
Contributor

@fossum thank you for logging this! Appreciate you for trying AppMap out.

@apotterri could you please comment on the packages involved, and if we could support them?

@apotterri
Copy link
Contributor

Hi @fossum. Welcome, and as @brikelly said, thanks for your interest in AppMap!

I spent a little time investigating this issue. Unfortunately, the approach appmap-python takes to instrumenting code isn't compatible with pythonnet. As a result, it's not currently possible to map applications that use it.

@fossum
Copy link
Author

fossum commented Feb 26, 2023

Dang, okay. Thanks for the update. I'll see if I can isolate some code.

A possible feature request would be a decorator that disabled that incompatible part.

@apotterri
Copy link
Contributor

Sadly, the problem appears to be related to way that appmap-python interacts with the finders in sys.meta_path. Disabling that is effectively the same as uninstalling. :(

I'm not 100% convinced that we couldn't get this work. It would just require some more time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants