Title: Crash on Event invocation with ref parameter · Issue #1355 · pythonnet/pythonnet · GitHub
Open Graph Title: Crash on Event invocation with ref parameter · Issue #1355 · pythonnet/pythonnet
X Title: Crash on Event invocation with ref parameter · Issue #1355 · pythonnet/pythonnet
Description: Environment Pythonnet version: 2.5.1 Python version: 3.6.5 Operating System: Windows 10 .NET Runtime: 4.8.4250.0 Details When I try to invoke a .NET event that takes a ref parameter, the python process crashes. I provided the code to rep...
Open Graph Description: Environment Pythonnet version: 2.5.1 Python version: 3.6.5 Operating System: Windows 10 .NET Runtime: 4.8.4250.0 Details When I try to invoke a .NET event that takes a ref parameter, the python pro...
X Description: Environment Pythonnet version: 2.5.1 Python version: 3.6.5 Operating System: Windows 10 .NET Runtime: 4.8.4250.0 Details When I try to invoke a .NET event that takes a ref parameter, the python pro...
Opengraph URL: https://github.com/pythonnet/pythonnet/issues/1355
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Crash on Event invocation with ref parameter","articleBody":"### Environment\r\n\r\n- Pythonnet version: 2.5.1\r\n- Python version: 3.6.5\r\n- Operating System: Windows 10\r\n- .NET Runtime: 4.8.4250.0\r\n\r\n### Details\r\n\r\n- When I try to invoke a .NET event that takes a `ref` parameter, the python process crashes. I provided the code to reproduce the issue below.\r\n\r\n***Note:*** I cannot change the code to not use `ref` as the `ref` delegate is coming from a 3rd party library. I can wrap around it with a lightweight C# piece of code but would rather avoid it if possible.\r\n***Note:*** This may be related to the following issue: https://github.com/pythonnet/pythonnet/issues/965\r\n\r\n#### Windows Event Viewer Error 1: Source - .NET Runtime\r\n```\r\nApplication: python.exe\r\nFramework Version: v4.0.30319\r\nDescription: The process was terminated due to an internal error in the .NET Runtime at IP 00007FF81CEA3D2E (00007FF81CEA0000) with exit code 80131506.\r\n```\r\n\r\n#### Windows Event Viewer Error 2: Source - Application Error\r\n```\r\nFaulting application name: python.exe, version: 3.6.5150.1013, time stamp: 0x5abbcb08\r\nFaulting module name: clr.dll, version: 4.8.4250.0, time stamp: 0x5f2a059c\r\nException code: 0xc0000005\r\nFault offset: 0x0000000000003d2e\r\nFaulting process id: 0x4348\r\nFaulting application start time: 0x01d6eaa4a034a863\r\nFaulting application path: C:\\Users\\noam.bonnie\\dev\\hp-bluetooth-service\\.tox\\py36\\Scripts\\python.exe\r\nFaulting module path: C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\clr.dll\r\nReport Id: c2031029-3b2f-4e61-aa84-5e5502e904d2\r\nFaulting package full name: \r\nFaulting package-relative application ID: \r\n```\r\n\r\n#### The C# class with `ref` parameter for the delegate. Removing the `ref` resolves the problem\r\n```C#\r\nusing System;\r\n\r\nnamespace TestEvent\r\n{\r\n public delegate void MyEvent(ref string data); \r\n\r\n public class MyTest\r\n {\r\n public event MyEvent myEvent;\r\n\r\n public virtual void triggerEvent()\r\n {\r\n Console.WriteLine(\"Invoking Event!\");\r\n string myStr = \"This is the event data\";\r\n myEvent?.Invoke(ref myStr);\r\n }\r\n }\r\n} \r\n```\r\n#### Python program to invoke the event. Crashes. \r\n```python\r\nimport clr\r\nimport os\r\nimport sys\r\n\r\n\r\ndef handleEventData(data):\r\n print(\"=== event invoked. data: {} ===\".format(data))\r\n\r\n\r\ntry:\r\n # load the library of the C# class above from a 'lib' local directory. \r\n # not necessary if the library of the C# dll is in the path\r\n lib_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'lib')\r\n sys.path.append(lib_path)\r\n clr.AddReference(\"TestEvent\")\r\n clr.AddReference(\"System\")\r\n\r\n # Print the .NET version\r\n import System\r\n print(System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription)\r\n\r\n # Create object, subscribe to event and trigger the event\r\n import TestEvent\r\n t = TestEvent.MyTest()\r\n t.myEvent += handleEventData\r\n t.triggerEvent()\r\nexcept Exception as e:\r\n print(e)\r\n```\r\n","author":{"url":"https://github.com/noambonnieclear","@type":"Person","name":"noambonnieclear"},"datePublished":"2021-01-14T21:34:04.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":7},"url":"https://github.com/1355/pythonnet/issues/1355"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:53e40936-5153-b1af-e81f-453932830385 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 967E:E7A2E:30F03C3:319F1C4:69702D90 |
| html-safe-nonce | b51b9737e03278eb66644a0977e1701f7759a7d47459e4badcfb95388a4d6fa9 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NjdFOkU3QTJFOjMwRjAzQzM6MzE5RjFDNDo2OTcwMkQ5MCIsInZpc2l0b3JfaWQiOiI0MTUzNzQ5OTU0MTkyNDg1Nzc2IiwicmVnaW9uX2VkZ2UiOiJzZWEiLCJyZWdpb25fcmVuZGVyIjoic2VhIn0= |
| visitor-hmac | 8a36f9e1734b5898e53c052a04c5477907d6114192655182f580da9531f27c07 |
| hovercard-subject-tag | issue:786356153 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/pythonnet/pythonnet/1355/issue_layout |
| twitter:image | https://opengraph.githubassets.com/50f0a897cf846c242886cdf85438a71fcc9dacfd742f0367da145f553cd822d7/pythonnet/pythonnet/issues/1355 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/50f0a897cf846c242886cdf85438a71fcc9dacfd742f0367da145f553cd822d7/pythonnet/pythonnet/issues/1355 |
| og:image:alt | Environment Pythonnet version: 2.5.1 Python version: 3.6.5 Operating System: Windows 10 .NET Runtime: 4.8.4250.0 Details When I try to invoke a .NET event that takes a ref parameter, the python pro... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | noambonnieclear |
| hostname | github.com |
| expected-hostname | github.com |
| None | 01fa379f5de85ef8e791d09724e69709ce9eb9595278316e0a921312dc88e0bc |
| turbo-cache-control | no-preview |
| go-import | github.com/pythonnet/pythonnet git https://github.com/pythonnet/pythonnet.git |
| octolytics-dimension-user_id | 6050430 |
| octolytics-dimension-user_login | pythonnet |
| octolytics-dimension-repository_id | 14748123 |
| octolytics-dimension-repository_nwo | pythonnet/pythonnet |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 14748123 |
| octolytics-dimension-repository_network_root_nwo | pythonnet/pythonnet |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | dda91974c069382b0dfa47b2da7e28bd061c8331 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width