Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

bpo-44172: Keep reference to original window in curses subwindow objects#26226

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
serhiy-storchaka merged 5 commits intopython:mainfrommichaelforney:curses-orig
May 4, 2025

Conversation

@michaelforney
Copy link
Contributor

@michaelforneymichaelforney commentedMay 19, 2021
edited by bedevere-bot
Loading

The X/Open curses specification[0] and ncurses documentation[1]
both state that subwindows must be deleted before the main window.

Deleting the windows in the wrong order causes a double-free with
NetBSD's curses implementation.

To fix this, keep track of the original window object in the subwindow
object, and keep a reference to the original for the lifetime of
the subwindow.

[0]https://pubs.opengroup.org/onlinepubs/7908799/xcurses/delwin.html
[1]https://invisible-island.net/ncurses/man/curs_window.3x.html

https://bugs.python.org/issue44172

acheam0 reacted with thumbs up emoji
The X/Open curses specification[0] and ncurses documentation[1]both state that subwindows must be deleted before the main window.Deleting the windows in the wrong order causes a double-free withNetBSD's curses implementation.To fix this, keep track of the original window object in the subwindowobject, and keep a reference to the original for the lifetime ofthe subwindow.[0]https://pubs.opengroup.org/onlinepubs/7908799/xcurses/delwin.html[1]https://invisible-island.net/ncurses/man/curs_window.3x.html
@the-knights-who-say-ni

Hello, and thanks for your contribution!

I'm a bot set up to make sure that the project can legally accept this contribution by verifying everyone involved has signed thePSF contributor agreement (CLA).

CLA Missing

Our records indicate the following people have not signed the CLA:

@michaelforney

For legal reasons we need all the people listed to sign the CLA before we can look at your contribution. Please followthe steps outlined in the CPython devguide to rectify this issue.

If you have recently signed the CLA, please wait at least one business day
before our records are updated.

You cancheck yourself to see if the CLA has been received.

Thanks again for the contribution, we look forward to reviewing it!

@github-actions
Copy link

This PR is stale because it has been open for 30 days with no activity.

@github-actionsgithub-actionsbot added the staleStale PR or inactive for long period of time. labelJun 19, 2021
@michaelforney
Copy link
ContributorAuthor

Still waiting for a review.

@github-actionsgithub-actionsbot removed the staleStale PR or inactive for long period of time. labelJun 20, 2021
Copy link
Member

@serhiy-storchakaserhiy-storchaka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Thank you for your contribution,@michaelforney. I apologize for the delay in the review.

The code LGTM. I resolved conflicts and added a test. I'll try to test it on NetBSD, but it can take a time. Could you please test that the added test exposes the issue with unpatched code?

@serhiy-storchakaserhiy-storchaka merged commit0af61fe intopython:mainMay 4, 2025
44 checks passed
@serhiy-storchakaserhiy-storchaka added the needs backport to 3.13bugs and security fixes labelMay 4, 2025
@miss-islington-app
Copy link

Thanks@michaelforney for the PR, and@serhiy-storchaka for merging it 🌮🎉.. I'm working now to backport this PR to: 3.13.
🐍🍒⛏🤖

@miss-islington-app
Copy link

Sorry,@michaelforney and@serhiy-storchaka, I could not cleanly backport this to3.13 due to a conflict.
Please backport usingcherry_picker on command line.

cherry_picker 0af61fe2f41048d66b0a973bbff056690446d3df 3.13

serhiy-storchaka added a commit to serhiy-storchaka/cpython that referenced this pull requestMay 4, 2025
…ow objects (pythonGH-26226)The X/Open curses specification[0] and ncurses documentation[1]both state that subwindows must be deleted before the main window.Deleting the windows in the wrong order causes a double-free withNetBSD's curses implementation.To fix this, keep track of the original window object in the subwindowobject, and keep a reference to the original for the lifetime ofthe subwindow.[0]https://pubs.opengroup.org/onlinepubs/7908799/xcurses/delwin.html[1]https://invisible-island.net/ncurses/man/curs_window.3x.html(cherry picked from commit0af61fe)Co-authored-by: Michael Forney <mforney@mforney.org>Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
@bedevere-app
Copy link

GH-133370 is a backport of this pull request to the3.13 branch.

@bedevere-appbedevere-appbot removed the needs backport to 3.13bugs and security fixes labelMay 4, 2025
serhiy-storchaka added a commit that referenced this pull requestMay 4, 2025
…ow objects (GH-26226) (GH-133370)The X/Open curses specification[0] and ncurses documentation[1]both state that subwindows must be deleted before the main window.Deleting the windows in the wrong order causes a double-free withNetBSD's curses implementation.To fix this, keep track of the original window object in the subwindowobject, and keep a reference to the original for the lifetime ofthe subwindow.[0]https://pubs.opengroup.org/onlinepubs/7908799/xcurses/delwin.html[1]https://invisible-island.net/ncurses/man/curs_window.3x.html(cherry picked from commit0af61fe)Co-authored-by: Michael Forney <mforney@mforney.org>
@bedevere-bot
Copy link

⚠️⚠️⚠️ Buildbot failure⚠️⚠️⚠️

Hi! The buildbotPPC64LE RHEL8 LTO + PGO 3.x (tier-2) has failed when building commit0af61fe.

What do you need to do:

  1. Don't panic.
  2. Checkthe buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/#/builders/458/builds/6121) and take a look at the build logs.
  4. Check if the failure is related to this commit (0af61fe) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/#/builders/458/builds/6121

Failed tests:

  • test_frame

Summary of the results of the build (if available):

==

Click to see traceback logs
remote:Enumerating objects: 19, done.remote:Counting objects:   7% (1/14)remote:Counting objects:  14% (2/14)remote:Counting objects:  21% (3/14)remote:Counting objects:  28% (4/14)remote:Counting objects:  35% (5/14)remote:Counting objects:  42% (6/14)remote:Counting objects:  50% (7/14)remote:Counting objects:  57% (8/14)remote:Counting objects:  64% (9/14)remote:Counting objects:  71% (10/14)remote:Counting objects:  78% (11/14)remote:Counting objects:  85% (12/14)remote:Counting objects:  92% (13/14)remote:Counting objects: 100% (14/14)remote:Counting objects: 100% (14/14), done.remote:Compressing objects:   8% (1/12)remote:Compressing objects:  16% (2/12)remote:Compressing objects:  25% (3/12)remote:Compressing objects:  33% (4/12)remote:Compressing objects:  41% (5/12)remote:Compressing objects:  50% (6/12)remote:Compressing objects:  58% (7/12)remote:Compressing objects:  66% (8/12)remote:Compressing objects:  75% (9/12)remote:Compressing objects:  83% (10/12)remote:Compressing objects:  91% (11/12)remote:Compressing objects: 100% (12/12)remote:Compressing objects: 100% (12/12), done.remote:Total 19 (delta 2), reused 3 (delta 2), pack-reused 5 (from 2)From https://github.com/python/cpython * branch                    main       -> FETCH_HEADNote:switching to '0af61fe2f41048d66b0a973bbff056690446d3df'.You are in 'detached HEAD' state. You can look around, make experimentalchanges and commit them, and you can discard any commits you make in thisstate without impacting any branches by switching back to a branch.If you want to create a new branch to retain commits you create, you maydo so (now or later) by using -c with the switch command. Example:  git switch -c <new-branch-name>Or undo this operation with:  git switch -Turn off this advice by setting config variable advice.detachedHead to falseHEAD is now at 0af61fe2f41 bpo-44172: Keep reference to original window in curses subwindow objects (GH-26226)Switched to and reset branch 'main'configure:WARNING: no system libmpdecimal found; falling back to bundled libmpdecimal (deprecated and scheduled for removal in Python 3.15)find:‘build’: No such file or directoryfind:‘build’: No such file or directoryfind:‘build’: No such file or directoryfind:‘build’: No such file or directorymake[2]:[Makefile:3340: clean-retain-profile] Error 1 (ignored)./Modules/_testlimitedcapi/unicode.c:In function ‘test_string_from_format’:./Modules/_testlimitedcapi/unicode.c:1416:1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without test_string_from_format(PyObject *self, PyObject *Py_UNUSED(ignored)) ^~~~~~~~~~~~~~~~~~~~~~~Python/Python-ast.c:In function ‘init_types’:Python/Python-ast.c:6137:1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without init_types(void *arg) ^~~~~~~~~~./Modules/_testlimitedcapi/unicode.c:In function ‘test_string_from_format’:./Modules/_testlimitedcapi/unicode.c:1416:1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without test_string_from_format(PyObject *self, PyObject *Py_UNUSED(ignored)) ^Python/Python-ast.c:In function ‘init_types’:Python/Python-ast.c:6137:1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without init_types(void *arg) ^Python/Python-ast.c:In function ‘init_types’:Python/Python-ast.c:6137:1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without init_types(void *arg) ^Python/Python-ast.c:In function ‘init_types’:Python/Python-ast.c:6137:1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without init_types(void *arg) ^make:*** [Makefile:2454: buildbottest] Error 2

diegorusso added a commit to diegorusso/cpython that referenced this pull requestMay 4, 2025
* origin/main: (111 commits)pythongh-91048: Add filename and line number to external inspection routines (pythonGH-133385)pythongh-131178: Add tests for `ast` command-line interface (python#133329)  Regenerate pcbuild.sln in Visual Studio 2022 (python#133394)pythongh-133042: disable HACL* HMAC on Emscripten (python#133064)pythongh-133351: Fix remote PDB's multi-line block tab completion (python#133387)pythongh-109700: Improve stress tests for interpreter creation (pythonGH-109946)pythongh-81793: Skip tests for os.link() to symlink on Android (pythonGH-133388)pythongh-126835: Rename `ast_opt.c` to `ast_preprocess.c` and related stuff after moving const folding to the peephole optimizier (python#131830)pythongh-91048: Relax test_async_global_awaited_by to fix flakyness (python#133368)pythongh-132457: make staticmethod and classmethod generic (python#132460)pythongh-132805: annotationlib: Fix handling of non-constant values in FORWARDREF (python#132812)pythongh-132426: Add get_annotate_from_class_namespace replacing get_annotate_function (python#132490)pythongh-81793: Always call linkat() from os.link(), if available (pythonGH-132517)pythongh-122559: Synchronize C and Python implementation of the io module about pickling (pythonGH-122628)pythongh-69605: Add PyREPL import autocomplete feature to 'What's New' (python#133358)  bpo-44172: Keep reference to original window in curses subwindow objects (pythonGH-26226)pythonGH-133231: Changes to executor management to support proposed `sys._jit` module (pythonGH-133287)pythongh-133363: Fix Cmd completion for lines beginning with `! ` (python#133364)pythongh-132983: Introduce `_zstd` bindings module (pythonGH-133027)pythonGH-91048: Add utils for printing the call stack for asyncio tasks (python#133284)  ...
Pranjal095 pushed a commit to Pranjal095/cpython that referenced this pull requestJul 12, 2025
…cts (pythonGH-26226)The X/Open curses specification[0] and ncurses documentation[1]both state that subwindows must be deleted before the main window.Deleting the windows in the wrong order causes a double-free withNetBSD's curses implementation.To fix this, keep track of the original window object in the subwindowobject, and keep a reference to the original for the lifetime ofthe subwindow.[0]https://pubs.opengroup.org/onlinepubs/7908799/xcurses/delwin.html[1]https://invisible-island.net/ncurses/man/curs_window.3x.htmlCo-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@serhiy-storchakaserhiy-storchakaserhiy-storchaka left review comments

Labels

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

6 participants

@michaelforney@the-knights-who-say-ni@bedevere-bot@serhiy-storchaka@vstinner@ezio-melotti

[8]ページ先頭

©2009-2025 Movatter.jp