Title: Crash in `DistributionFinder.context` because it is using `vars(self).update(kwargs)` under memory preasure · Issue #152083 · python/cpython · GitHub
Open Graph Title: Crash in `DistributionFinder.context` because it is using `vars(self).update(kwargs)` under memory preasure · Issue #152083 · python/cpython
X Title: Crash in `DistributionFinder.context` because it is using `vars(self).update(kwargs)` under memory preasure · Issue #152083 · python/cpython
Description: Crash report Original report: https://gist.github.com/devdanzin/bf9fec4554c58c2a279b05b7ff8e6d9b (it produces the correct repro, but everything else is not correct, since it is AI generated and can be fuzzy). Here's the real picture. Thi...
Open Graph Description: Crash report Original report: https://gist.github.com/devdanzin/bf9fec4554c58c2a279b05b7ff8e6d9b (it produces the correct repro, but everything else is not correct, since it is AI generated and can...
X Description: Crash report Original report: https://gist.github.com/devdanzin/bf9fec4554c58c2a279b05b7ff8e6d9b (it produces the correct repro, but everything else is not correct, since it is AI generated and can...
Opengraph URL: https://github.com/python/cpython/issues/152083
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Crash in `DistributionFinder.context` because it is using `vars(self).update(kwargs)` under memory preasure","articleBody":"# Crash report\n\nOriginal report: https://gist.github.com/devdanzin/bf9fec4554c58c2a279b05b7ff8e6d9b (it produces the correct repro, but everything else is not correct, since it is AI generated and can be fuzzy).\n\nHere's the real picture.\n\nThis class raises an error: \n\nhttps://github.com/python/cpython/blob/1785f4b35f899704df0be54cba3776906186b2b1/Lib/importlib/metadata/__init__.py#L742-L750\n\nRepro:\n\n```python\nimport faulthandler, importlib.metadata\nfaulthandler.enable()\nfrom _testcapi import set_nomemory\nfor start in range(40):\n set_nomemory(start)\n try:\n importlib.metadata.metadata(\"f\")\n except BaseException:\n pass\nprint(\"done, no crash\")\n```\n\nError:\n\n```\nFatal Python error: _Py_Dealloc: Deallocator of type 'Context' cleared the current exception\nPython runtime state: initialized\n\nStack (most recent call first):\n File \"/Users/sobolev/Desktop/cpython/Lib/importlib/metadata/__init__.py\", line 465 in from_name\n File \"/Users/sobolev/Desktop/cpython/Lib/importlib/metadata/__init__.py\", line 1091 in metadata\n File \"/Users/sobolev/Desktop/cpython/ex.py\", line 7 in \u003cmodule\u003e\n\nExtension modules: _testcapi (total: 1)\n[1] 14108 abort ./python.exe ex.py\n```\n\nI tested this hack, no crash:\n\n```python\ndiff --git Lib/importlib/metadata/__init__.py Lib/importlib/metadata/__init__.py\nindex 32f4b7d2d6e..43ec93db749 100644\n--- Lib/importlib/metadata/__init__.py\n+++ Lib/importlib/metadata/__init__.py\n@@ -777,7 +777,8 @@ class Context:\n \"\"\"\n \n def __init__(self, **kwargs):\n- vars(self).update(kwargs)\n+ for k, v in kwargs.items():\n+ setattr(self, k, v)\n \n @property\n def path(self) -\u003e list[str]:\n```\n\nBut, this is clearly not a proper fix. Because for some reason the exception is cleared somewhere.\n\nAfter:\n\n```\n» ./python.exe ex.py\nobject address : 0x20002128190\nobject refcount : 3\nobject type : 0x101267e70\nobject type name: MemoryError\nobject repr : \nlost sys.stderr\nobject address : 0x20002128110\nobject refcount : 3\nobject type : 0x101267e70\nobject type name: MemoryError\nobject repr : \nlost sys.stderr\n```\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-152981\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/sobolevn","@type":"Person","name":"sobolevn"},"datePublished":"2026-06-24T13:52:48.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/152083/cpython/issues/152083"}
| 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:1343fbbb-4014-3354-fe3f-055237ed1c54 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BA52:1ECA58:90DDA6:C1353D:6A52AF8C |
| html-safe-nonce | 7da06af5d8d9a9168c80d74184fa0b5a2efe98221b35d968d05c31c07db2c328 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQTUyOjFFQ0E1ODo5MEREQTY6QzEzNTNEOjZBNTJBRjhDIiwidmlzaXRvcl9pZCI6IjI2ODk1MjA2OTMzNTA2ODU1NiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | ecc19e5182307f1e32b7c2f71fc450401cb0d3a4f797e65fd1410ec05d34d13c |
| hovercard-subject-tag | issue:4735441080 |
| 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/python/cpython/152083/issue_layout |
| twitter:image | https://opengraph.githubassets.com/7dfb307e4b5e42c80c2eedc2552572056ec64be2ecb98c0a14c9cad14aded677/python/cpython/issues/152083 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/7dfb307e4b5e42c80c2eedc2552572056ec64be2ecb98c0a14c9cad14aded677/python/cpython/issues/152083 |
| og:image:alt | Crash report Original report: https://gist.github.com/devdanzin/bf9fec4554c58c2a279b05b7ff8e6d9b (it produces the correct repro, but everything else is not correct, since it is AI generated and can... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | sobolevn |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| 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 | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width