Title: dict() resize failure · Issue #102701 · python/cpython · GitHub
Open Graph Title: dict() resize failure · Issue #102701 · python/cpython
X Title: dict() resize failure · Issue #102701 · python/cpython
Description: Bug report When running under python 3.11.1, 3.11.2 and 3.12.a6, the dict() data structure fails to resize past 357913941 elements. This worked last (in what I have available) under python 3.10.8 and I can find no documentation that limi...
Open Graph Description: Bug report When running under python 3.11.1, 3.11.2 and 3.12.a6, the dict() data structure fails to resize past 357913941 elements. This worked last (in what I have available) under python 3.10.8 a...
X Description: Bug report When running under python 3.11.1, 3.11.2 and 3.12.a6, the dict() data structure fails to resize past 357913941 elements. This worked last (in what I have available) under python 3.10.8 a...
Opengraph URL: https://github.com/python/cpython/issues/102701
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"dict() resize failure","articleBody":"# Bug report\r\nWhen running under python 3.11.1, 3.11.2 and 3.12.a6, the dict() data structure fails to resize past 357913941 elements. This worked last (in what I have available) under python 3.10.8 and I can find no documentation that limits the size of a dict to a finite size. The system has \u003e512G of memory and this example easily fits in that memory.\r\n\r\nMy reproducer is mem.py:\r\n```python\r\nd=dict()\r\nfor a in range(500000000):\r\n try:\r\n d[a]=1\r\n except:\r\n print(a)\r\n exit(0)\r\n```\r\noutput:\r\n357913941\r\n\r\nAs an aside (2^31)/3/2 = 357913941. It looks to me like there is an int32 in the code that's trying to represent the size of the dict. (GROWTH_FACTOR=3) I'm not sure where the extra factor of 2 is coming from yet.\r\n\r\n\r\nSimplest reproducer is:\r\n```python\r\nd=dict()\r\nfor a in range(500000000):\r\n d[a]=1\r\n ```\r\noutput:\r\n d[a]=1\r\n ~^^^\r\nMemoryError\r\n\r\nexit code=1\r\n\r\n\r\n# Your environment\r\n\r\nI have tested on 3.10.8 (no failure) 3.11.1, 3.11.2, 3.12.a6 (fail)\r\nThis test must be run on a 64bit system with \u003e40G of RAM free. (I have not tested on a system with less memory but I assume an Out of Memory error from the OS will stop the python program before the dict() failure\u003e)\r\n\r\nTo reproduce I built the python with:\r\n```\r\n./configure --prefix=/mydir/python-3.12.a6 --enable-ipv6 --enable-shared --with-system-ffi --with-system-expat --with-ssl-default-suites=openssl --enable-optimizations\r\nmake -j\r\nmake install\r\nset PATH=/mydir/python-3.12.a6/bin:$PATH and LD_LIBRARY_PATH=/mydir/python-3.12.a6/lib\r\npython3 mem.py\r\n```\r\n\r\nIn pyconfig.h\r\nSIZEOF_VOID_P = 8\r\nSIZEOF_SIZE_T = 8\r\n\r\nOS:\r\nRed Hat Enterprise Linux release 8.7 (Ootpa)\r\n\r\ncat /proc/meminfo \r\nMemTotal: 263686408 kB\r\nMemFree: 150322584 kB\r\nMemAvailable: 221228188 kB\r\n...\r\n\r\nFails with both Intel and AMD servers.\r\n\r\n\r\n\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-102750\n* gh-102777\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/kumbera1","@type":"Person","name":"kumbera1"},"datePublished":"2023-03-14T21:33:43.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/102701/cpython/issues/102701"}
| 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:9d885e8f-d88d-c651-4297-20d30afbf00d |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D4D8:9DE01:F107B6:14A2077:6969F192 |
| html-safe-nonce | 8e119f0616d235c0372e1497b4f182f6a8b2292f4e8a3b299c10ba75201b26be |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENEQ4OjlERTAxOkYxMDdCNjoxNEEyMDc3OjY5NjlGMTkyIiwidmlzaXRvcl9pZCI6IjQyODc5OTk0MzkxODAyNjM4MjYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 8fe177c270cff3adce1010201bf294954b220f3df2f603854b5cafd0b831c2ca |
| hovercard-subject-tag | issue:1624332915 |
| 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/102701/issue_layout |
| twitter:image | https://opengraph.githubassets.com/0243bcd7344e1c5a21bf8d488aa5c713b28f368738395b755f3ef6d83836fc37/python/cpython/issues/102701 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/0243bcd7344e1c5a21bf8d488aa5c713b28f368738395b755f3ef6d83836fc37/python/cpython/issues/102701 |
| og:image:alt | Bug report When running under python 3.11.1, 3.11.2 and 3.12.a6, the dict() data structure fails to resize past 357913941 elements. This worked last (in what I have available) under python 3.10.8 a... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | kumbera1 |
| hostname | github.com |
| expected-hostname | github.com |
| None | 7b32f1c7c4549428ee399213e8345494fc55b5637195d3fc5f493657579235e8 |
| 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 | bdde15ad1b403e23b08bbd89b53fbe6bdf688cad |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width