Title: `tkinter.Tk` segfault with invalid `className` · Issue #126219 · python/cpython · GitHub
Open Graph Title: `tkinter.Tk` segfault with invalid `className` · Issue #126219 · python/cpython
X Title: `tkinter.Tk` segfault with invalid `className` · Issue #126219 · python/cpython
Description: Crash report What happened? It's possible to crash Python by passing an invalid className to _tkinter.create, for example: import _tkinter _tkinter.create(None, '', '\U0010FFFF', None) Or, using tkinter.Tk (repro thanks to @graingert and...
Open Graph Description: Crash report What happened? It's possible to crash Python by passing an invalid className to _tkinter.create, for example: import _tkinter _tkinter.create(None, '', '\U0010FFFF', None) Or, using tk...
X Description: Crash report What happened? It's possible to crash Python by passing an invalid className to _tkinter.create, for example: import _tkinter _tkinter.create(None, '', '\U0010FFFF'...
Opengraph URL: https://github.com/python/cpython/issues/126219
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"`tkinter.Tk` segfault with invalid `className`","articleBody":"# Crash report\r\n\r\n### What happened?\r\n\r\nIt's possible to crash Python by passing an invalid `className` to `_tkinter.create`, for example:\r\n```python\r\nimport _tkinter \r\n_tkinter.create(None, '', '\\U0010FFFF', None)\r\n```\r\n\r\nOr, using `tkinter.Tk` (repro thanks to @graingert and @JelleZijlstra):\r\n```python\r\n% ./python.exe \r\nPython 3.14.0a0 experimental free-threading build (heads/gh-125331:c315120a535, Oct 30 2024, 11:22:31) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin\r\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n\u003e\u003e\u003e import tkinter\r\n... tkinter.Tk(screenName=None, baseName='', className='\\U0010FFFF')\r\n... \r\nzsh: segmentation fault ./python.exe\r\n```\r\n\r\nBacktrace looks like:\r\n\r\n```gdb\r\n#0 0x00007ffff77bab5b in Tcl_UtfToUniChar () from /lib/x86_64-linux-gnu/libtcl8.6.so\r\n#1 0x00007ffff77bc993 in ?? () from /lib/x86_64-linux-gnu/libtcl8.6.so\r\n#2 0x00007ffff77bb795 in Tcl_UtfToTitle () from /lib/x86_64-linux-gnu/libtcl8.6.so\r\n#3 0x00007ffff78b5083 in ?? () from /lib/x86_64-linux-gnu/libtk8.6.so\r\n#4 0x00007ffff79dcf9d in Tcl_AppInit (interp=0x555555e14860) at ./Modules/tkappinit.c:40\r\n#5 0x00007ffff79d92b4 in Tkapp_New (screenName=screenName@entry=0x0,\r\n className=className@entry=0x7ffff7c2c1c0 \"\\364\\217\\277\\277\", interactive=interactive@entry=0,\r\n wantobjects=wantobjects@entry=0, wantTk=wantTk@entry=1, sync=sync@entry=0, use=0x0)\r\n at ./Modules/_tkinter.c:730\r\n#6 0x00007ffff79d953f in _tkinter_create_impl (module=module@entry=\u003cmodule at remote 0x7ffff7ab9eb0\u003e,\r\n screenName=screenName@entry=0x0, baseName=baseName@entry=0x555555c77ef0 \u003c_PyRuntime+51344\u003e \"\",\r\n className=className@entry=0x7ffff7c2c1c0 \"\\364\\217\\277\\277\", interactive=interactive@entry=0,\r\n wantobjects=wantobjects@entry=0, wantTk=1, sync=0, use=0x0) at ./Modules/_tkinter.c:3176\r\n#7 0x00007ffff79d99c6 in _tkinter_create (module=\u003cmodule at remote 0x7ffff7ab9eb0\u003e, args=0x7ffff7fb0080,\r\n nargs=\u003coptimized out\u003e) at ./Modules/clinic/_tkinter.c.h:820\r\n#8 0x00005555556f18b0 in cfunction_vectorcall_FASTCALL (\r\n func=\u003cbuilt-in method create of module object at remote 0x7ffff7ab9eb0\u003e, args=0x7ffff7fb0080,\r\n nargsf=\u003coptimized out\u003e, kwnames=\u003coptimized out\u003e) at Objects/methodobject.c:436\r\n#9 0x000055555567ba55 in _PyObject_VectorcallTstate (tstate=0x555555cbbc70 \u003c_PyRuntime+329232\u003e,\r\n callable=\u003cbuilt-in method create of module object at remote 0x7ffff7ab9eb0\u003e, args=0x7ffff7fb0080,\r\n nargsf=9223372036854775812, kwnames=0x0) at ./Include/internal/pycore_call.h:167\r\n```\r\n\r\n\r\nFound using fusil by @vstinner. \r\n\r\n### CPython versions tested on:\r\n\r\n3.12, 3.14, CPython main branch\r\n\r\n### Operating systems tested on:\r\n\r\nLinux, macOS, Windows\r\n\r\n### Output from running 'python -VV' on the command line:\r\n\r\nPython 3.14.0a1+ (heads/main:d467d9246c, Oct 30 2024, 22:52:43) [GCC 11.4.0]","author":{"url":"https://github.com/devdanzin","@type":"Person","name":"devdanzin"},"datePublished":"2024-10-31T02:55:21.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":5},"url":"https://github.com/126219/cpython/issues/126219"}
| 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:5e3cf3e3-98f1-9efb-987b-f1ced686abdf |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E082:2ACFDC:17861BD:1F96AED:6969BFF2 |
| html-safe-nonce | bbc2d72a7746c1c458261a2b59ea0f36bf30170895bbf5dfdcc7b5094dced411 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFMDgyOjJBQ0ZEQzoxNzg2MUJEOjFGOTZBRUQ6Njk2OUJGRjIiLCJ2aXNpdG9yX2lkIjoiNTc3ODEwNDA0MjkxODYyNTI2NiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | cf14e9f274ef473ca06aaff42109f985d25ff93f0e6bc516a80df647a95b7ba9 |
| hovercard-subject-tag | issue:2625859817 |
| 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/126219/issue_layout |
| twitter:image | https://opengraph.githubassets.com/c500c219a0a7cf01145e6b3d0d36dfb47411d6687ceac02856c2a0fdce9ee494/python/cpython/issues/126219 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/c500c219a0a7cf01145e6b3d0d36dfb47411d6687ceac02856c2a0fdce9ee494/python/cpython/issues/126219 |
| og:image:alt | Crash report What happened? It's possible to crash Python by passing an invalid className to _tkinter.create, for example: import _tkinter _tkinter.create(None, '', '\U0010FFFF', None) Or, using tk... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | devdanzin |
| hostname | github.com |
| expected-hostname | github.com |
| None | acedec8b5f975d9e3d494ddd8f949b0b8a0de59d393901e26f73df9dcba80056 |
| 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 | 83c08c21cdda978090dc44364b71aa5bc6dcea79 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width