GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||
GeezerVison is showing github.com — GH-126910: Make `_Py_get_machine_stack_pointer` return the actual stack pointer by markshannon · Pull Request #149103 · python/cpython Conversation
|
Documentation build overview
66 files changed ·
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
🤖 New build scheduled with the buildbot fleet by @markshannon for commit 01fe604 🤖 Results will be shown at: https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F149103%2Fmerge If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
🤖 New build scheduled with the buildbot fleet by @markshannon for commit 98073f5 🤖 Results will be shown at: https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F149103%2Fmerge If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@pablogsal |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Perf should add the Python function below that one, yes. I need time to investigate I will try to do it this week but I am a bit overwhelmed with pending things. I will try to take a look as soon as possible. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
I spent several hours digging into this one and was able to reproduce theCentOS9 NoGIL failure locally in a CentOS Stream 9 podman container with GCC 11.5 and perf 5.14. The short version is: the PR itself did not break perf-map generation. The generated perf map still contains the On the failing build, __builtin_frame_address(0) After this PR, on x86-64 it reads the real stack pointer with inline asm: __asm__("{movq %%rsp, %0" : "=r" (result)); The new behavior is the right semantic direction for the stack-pointer work, but the old That matters because the perf trampoline test depends on frame-pointer unwinding. On the failing CentOS9/GCC 11.5 build, __attribute__((optimize ("no-tree-slp-vectorize"))) With the new _PyEval_EvalFrameDefault: push %r15 push %r14 push %r13 push %r12 push %rbx sub $0x180,%rsp ... mov %rsp,%rax With the old _PyEval_EvalFrameDefault: push %rbp mov %rsp,%rbp push %r15 ... So before this PR, the test passed because The fix is to keep the new real stack-pointer behavior, but make the eval-loop optimization attribute explicitly preserve frame pointers too: #define DONT_SLP_VECTORIZE \ __attribute__((optimize ("no-tree-slp-vectorize", "no-omit-frame-pointer"))) I verified this in the CentOS Stream 9 reproduction:
push %rbp mov %rsp,%rbp |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Thanks a lot for digging into this. Much appreciated |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
🤖 New build scheduled with the buildbot fleet by @markshannon for commit c971274 🤖 Results will be shown at: https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F149103%2Fmerge If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
!buildbot Alpine |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
🤖 New build scheduled with the buildbot fleet by @markshannon for commit 0d3a7fb 🤖 Results will be shown at: https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F149103%2Fmerge The command will test the builders whose names match following regular expression: The builders matched are:
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
The three buildobot failures were preexisting failures or time outs. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Very nit comments, it looks good. Thanks!
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| // Overflow if stack pointer is between soft limit and the base of the hardware stack. | ||
| // If it is below the hardware stack base, assume that we have the wrong stack limits, and do nothing. | ||
| // We could have the wrong stack limits because of limited platform support, or user-space threads. | ||
| // Possible overflow if stack pointer is beyond the soft limit. |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
extra space
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.