-
-
Notifications
You must be signed in to change notification settings - Fork 32.2k
gh-131338: Disable new stack size code for non-glibc on linux. #134336
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
gh-131338: Disable new stack size code for non-glibc on linux. #134336
Conversation
MUSL claims to support pthread_getattr_np, but the response returned is off by at least an order of magnitude compared to reality. This is apparently a long standing problem. MUSL also does not provide any way to detect directly that it is the libc. It would be possible to add things to configure to detect that MUSL is the compiler, but since this code has caused problems for a lot of non-glibc platforms, it seems easier to just restrict it to glibc.
Python/ceval.c
Outdated
@@ -442,7 +442,8 @@ _Py_InitializeRecursionLimits(PyThreadState *tstate) | |||
_tstate->c_stack_soft_limit = _tstate->c_stack_hard_limit + PYOS_STACK_MARGIN_BYTES; | |||
#else | |||
uintptr_t here_addr = _Py_get_machine_stack_pointer(); | |||
# if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(_AIX) && !defined(__NetBSD__) | |||
# if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(_AIX) && \ | |||
!defined(__NetBSD__) && defined(__GLIBC__) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think that this call is correct. It disables the call on FreeBSD.
Maybe check for "glibc or not Linux"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That would fix it for alpine, but not for emscripten or wasi (but I don't know what they actually need). I'd rather see it as if glibc or freebsd, and get rid of the rest, but glibc or not linux would work for my immediate concern.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, let's start with fixing Alpine Linux.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, done. Also added an XXX comment, since I think this needs more investigation. I'll put it on my todo list to post to the musl mailing list about it.
This exempts alpine but doesn't affect, eg, FreeBSD.
MUSL claims to support pthread_getattr_np, but the response returned is off by at least an order of magnitude compared to reality. This is apparently a long standing problem. MUSL also does not provide any way to detect directly that it is the libc. It would be possible to add things to configure to detect that MUSL is the compiler, but since this code has apparently caused problems for a lot of non-glibc platforms, it seems easier to just restrict it to glibc.