Title: Memory leak when throwing exceptions in .NET and catching in Python · Issue #1476 · pythonnet/pythonnet · GitHub
Open Graph Title: Memory leak when throwing exceptions in .NET and catching in Python · Issue #1476 · pythonnet/pythonnet
X Title: Memory leak when throwing exceptions in .NET and catching in Python · Issue #1476 · pythonnet/pythonnet
Description: Environment Pythonnet version: 2.5.2 Python version: issue verified on 3.7.2, 3.7.7 and 3.8.6 Operating System: Windows 10 64bit .NET Runtime: .NET Framework 4.7.2 Details Hello everybody and thanks for this great piece of Software! The ...
Open Graph Description: Environment Pythonnet version: 2.5.2 Python version: issue verified on 3.7.2, 3.7.7 and 3.8.6 Operating System: Windows 10 64bit .NET Runtime: .NET Framework 4.7.2 Details Hello everybody and thank...
X Description: Environment Pythonnet version: 2.5.2 Python version: issue verified on 3.7.2, 3.7.7 and 3.8.6 Operating System: Windows 10 64bit .NET Runtime: .NET Framework 4.7.2 Details Hello everybody and thank...
Opengraph URL: https://github.com/pythonnet/pythonnet/issues/1476
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Memory leak when throwing exceptions in .NET and catching in Python","articleBody":"### Environment\r\n\r\n- Pythonnet version: 2.5.2\r\n- Python version: issue verified on 3.7.2, 3.7.7 and 3.8.6\r\n- Operating System: Windows 10 64bit\r\n- .NET Runtime: .NET Framework 4.7.2\r\n\r\n### Details\r\n\r\nHello everybody and thanks for this great piece of Software!\r\n\r\nThe basic issue is:\r\n* if I throw a .NET exception from within C# code\r\n* and the exception moves into the python space\r\n * i.e. the C# method was called from python\r\n* then the memory of the exception does not get released anymore\r\n\r\nThis becomes apparent when you throw quite a lot of exceptions and your applications runs 24/7.\r\n\r\n#### Reproducability\r\n\r\nThe issue is fairly easy to reproduce. I have also setup a sample repository, which reproduces the issue.\r\n\r\nhttps://github.com/Rookfighter/pythonnet-memleak-exceptions\r\n\r\nThe basis instruction are:\r\n\r\n* setup a Visual Studio Project of the type \"Class Library .NET Framework 4.7.2\"\r\n* create a `ExceptionThrower` class\r\n\r\n```cs\r\nusing System;\r\n\r\nnamespace LeakingExceptions\r\n{\r\n public class ExceptionThrower\r\n {\r\n public void ThrowException()\r\n {\r\n throw new Exception(\"a simple exception\");\r\n }\r\n }\r\n}\r\n```\r\n\r\n* create a python script which imports the assembly\r\n* create a `ExceptionThrower` object and call `ThrowException` within a looped `try except` block\r\n\r\n```python\r\nimport os\r\nimport __main__\r\n\r\nimport clr\r\n\r\n# bin dir must be adjusted to your relative path!\r\nbin_dir = os.path.abspath(os.path.join(os.path.dirname(__main__.__file__), '../Source/LeakingExceptions/bin/Debug'))\r\nclr.AddReference(os.path.join(bin_dir, 'LeakingExceptions'))\r\n\r\nfrom LeakingExceptions import ExceptionThrower\r\n\r\nthrower = ExceptionThrower()\r\n\r\nwhile True:\r\n try:\r\n thrower.ThrowException()\r\n except:\r\n pass\r\n```\r\n\r\n* in the task manager you can then watch the application to accumulate memory and never release it\r\n\r\n\r\n\r\n\r\n","author":{"url":"https://github.com/Rookfighter","@type":"Person","name":"Rookfighter"},"datePublished":"2021-06-23T07:23:42.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/1476/pythonnet/issues/1476"}
| 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:3c4eb2f3-cf39-87d5-fcba-e6e16b96f84f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | ECF4:16F17F:1C9E0B1:280A7BA:6970E701 |
| html-safe-nonce | d3d3895c727626a1de7fab8ebdceca41cdcf61470891f37b87f8d5df62a382ac |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFQ0Y0OjE2RjE3RjoxQzlFMEIxOjI4MEE3QkE6Njk3MEU3MDEiLCJ2aXNpdG9yX2lkIjoiNDcxNzI2MDMzMjEyNjQ5NjUxMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 899915a7ee64d2d19ff8fc1396340308059ee952fa8c5f5314b1065e8788ec4c |
| hovercard-subject-tag | issue:927943394 |
| 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/1476/issue_layout |
| twitter:image | https://opengraph.githubassets.com/4ed5d1a0aa1ad1cea6542ce2a6330095d8b0bdc08893692b31ebe516fa95c7a3/pythonnet/pythonnet/issues/1476 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/4ed5d1a0aa1ad1cea6542ce2a6330095d8b0bdc08893692b31ebe516fa95c7a3/pythonnet/pythonnet/issues/1476 |
| og:image:alt | Environment Pythonnet version: 2.5.2 Python version: issue verified on 3.7.2, 3.7.7 and 3.8.6 Operating System: Windows 10 64bit .NET Runtime: .NET Framework 4.7.2 Details Hello everybody and thank... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | Rookfighter |
| hostname | github.com |
| expected-hostname | github.com |
| None | a8b3a33ad16bd33428ccc7800d4ea7bfc6b4990584847afdcb92b020b61a949b |
| 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 | b8a8c883a585a3dc6cb57fa8b7997b70c86a696c |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width