Title: Hard crash when deleting from Dictionary · Issue #2530 · pythonnet/pythonnet · GitHub
Open Graph Title: Hard crash when deleting from Dictionary · Issue #2530 · pythonnet/pythonnet
X Title: Hard crash when deleting from Dictionary · Issue #2530 · pythonnet/pythonnet
Description: Environment Pythonnet version: 3.0.5 Python version: both 3.12 and 3.13 Operating System: MacOS Sequoia 15.1.1 .NET Runtime: both 7.0.410 and 8.0.403 Details Describe what you were trying to get done. Remove an element from a .NET Dictio...
Open Graph Description: Environment Pythonnet version: 3.0.5 Python version: both 3.12 and 3.13 Operating System: MacOS Sequoia 15.1.1 .NET Runtime: both 7.0.410 and 8.0.403 Details Describe what you were trying to get do...
X Description: Environment Pythonnet version: 3.0.5 Python version: both 3.12 and 3.13 Operating System: MacOS Sequoia 15.1.1 .NET Runtime: both 7.0.410 and 8.0.403 Details Describe what you were trying to get do...
Opengraph URL: https://github.com/pythonnet/pythonnet/issues/2530
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Hard crash when deleting from Dictionary","articleBody":"### Environment\r\n\r\n- Pythonnet version: 3.0.5\r\n- Python version: both 3.12 and 3.13\r\n- Operating System: MacOS Sequoia 15.1.1\r\n- .NET Runtime: both 7.0.410 and 8.0.403\r\n\r\n### Details\r\n\r\n- Describe what you were trying to get done.\r\n\r\nRemove an element from a .NET Dictionary using the del operator (`__delitem__`).\r\n\r\n- What commands did you run to trigger this issue?\r\n If you can provide a [Minimal, Complete, and Verifiable example](http://stackoverflow.com/help/mcve) this will help us understand the issue.\r\n\r\nI reduced the problem to the following example, simply run from the command line:\r\n```python\r\nimport pythonnet\r\npythonnet.load('coreclr')\r\nprint(pythonnet.get_runtime_info(), end='\\n\\n')\r\n\r\nimport clr\r\n\r\nfrom System.Collections.Generic import Dictionary\r\nfrom System import Int32, String\r\n\r\nDT = Dictionary[Int32, String]\r\nd = DT()\r\nd[10] = '10'\r\nd[20] = '20'\r\nprint('__delitem__ is implemented by {}'.format(\r\n next(iter(cls for cls in DT.mro() if hasattr(cls, '__delitem__')))\r\n))\r\ndel d[20] # crash\r\n```\r\n\r\n- If there was a crash, please include the traceback here.\r\n\r\nThe program crashed with the following output:\r\n```\r\nRuntime: CoreCLR\r\n=============\r\n Version: \u003cundefined\u003e\r\n Initialized: True\r\n Shut down: False\r\n Properties:\r\n HOST_RUNTIME_CONTRACT = 0x600003a840c8\r\n PROBING_DIRECTORIES =\r\n RUNTIME_IDENTIFIER = osx-arm64\r\n FX_DEPS_FILE = /usr/local/share/dotnet/shared/Microsoft.NETCore.App…\r\n APP_CONTEXT_DEPS_FILES = /usr/local/share/dotnet/shared/Microsoft.N…\r\n APP_CONTEXT_BASE_DIRECTORY =\r\n PLATFORM_RESOURCE_ROOTS = :\r\n NATIVE_DLL_SEARCH_DIRECTORIES = :/usr/local/share/dotnet/shared/Mic…\r\n TRUSTED_PLATFORM_ASSEMBLIES = /usr/local/share/dotnet/shared/Micros…\r\n\r\n__delitem__ is implemented by \u003cclass 'System.Collections.Generic.Dictionary[Int32,String]'\u003e\r\nUnhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.\r\n at Python.Runtime.BorrowedReference.DangerousGetAddress() in /home/benedikt/.cache/uv/sdists-v6/.tmpkW03e6/pythonnet-3.0.5/src/runtime/Native/BorrowedReference.cs:line 18\r\n at Python.Runtime.NewReference..ctor(BorrowedReference reference, Boolean canBeNull) in /home/benedikt/.cache/uv/sdists-v6/.tmpkW03e6/pythonnet-3.0.5/src/runtime/Native/NewReference.cs:line 20\r\n at Python.Runtime.Runtime.PyTuple_SetItem(BorrowedReference pointer, IntPtr index, BorrowedReference value) in /home/benedikt/.cache/uv/sdists-v6/.tmpkW03e6/pythonnet-3.0.5/src/runtime/Runtime.cs:line 1482\r\n at Python.Runtime.ClassBase.mp_ass_subscript_impl(BorrowedReference ob, BorrowedReference idx, BorrowedReference v) in /home/benedikt/.cache/uv/sdists-v6/.tmpkW03e6/pythonnet-3.0.5/src/runtime/Types/ClassBase.cs:line 498\r\n[1] 56976 abort python3.12 /tmp/ramdisk/delme_test_pythonnet.py\r\n```\r\n\r\nNotice that `__delitem__` is also implemented by the `MutableMappingMixin` class [here](https://github.com/pythonnet/pythonnet/blob/dfd746b339dc24d530f7d64768e1c8acf9d84cb4/src/runtime/Mixins/collections.py#L58), which simply calls the `Remove()` method, but `Dictionary` has its own implementation (that I can't find), which takes precedence.\r\nThe former would have worked correctly (tested), as `Remove()` works as usual.","author":{"url":"https://github.com/DiegoBaldassarMilleuno","@type":"Person","name":"DiegoBaldassarMilleuno"},"datePublished":"2024-12-13T11:01:16.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":5},"url":"https://github.com/2530/pythonnet/issues/2530"}
| 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:c854280d-54dc-1dd5-c022-7b49e7bc78ee |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 955E:1A4AD6:15C6667:1CB4889:69718F42 |
| html-safe-nonce | b56d43174927bc05b4cf1a52024ad7e82b9cbd2326b63359a5b922fb1387d4a8 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NTVFOjFBNEFENjoxNUM2NjY3OjFDQjQ4ODk6Njk3MThGNDIiLCJ2aXNpdG9yX2lkIjoiMzY3ODYyNjM5OTczMjczMTcxNSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | db38bb2a56f20e495bce546a7e3ab7bc211b3c65832de25dedc21ed1b99cbe74 |
| hovercard-subject-tag | issue:2738127654 |
| 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/2530/issue_layout |
| twitter:image | https://opengraph.githubassets.com/4b9aad9c37240432dbc7f185996e6b9cb19b70a1f1d455bb14f95d0921bc2a4e/pythonnet/pythonnet/issues/2530 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/4b9aad9c37240432dbc7f185996e6b9cb19b70a1f1d455bb14f95d0921bc2a4e/pythonnet/pythonnet/issues/2530 |
| og:image:alt | Environment Pythonnet version: 3.0.5 Python version: both 3.12 and 3.13 Operating System: MacOS Sequoia 15.1.1 .NET Runtime: both 7.0.410 and 8.0.403 Details Describe what you were trying to get do... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | DiegoBaldassarMilleuno |
| hostname | github.com |
| expected-hostname | github.com |
| None | 2b0f2f00499ad3dd2c21ad030a3c403edca54df20ea256f6517c6d8c4fa3a1a4 |
| 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 | 67235153f3c1514ed5f7dc469f138abc377bd388 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width