-
Bug
-
Resolution: Unresolved
-
Normal
-
rhel-8.10, rhel-9.5, rhel-10.0
The ctype.h macros (isdigit, isspace, etc.) segfault if called from a secondary thread (created in the base namespace) and dlmopen'd namespace.
In this scenario `*_ctype_b_loc()` is a zero pointer which causes the segfault. AFAICT `_ctype_init()` is only called for the base namespace during `start_thread()`, the dlmopen'd namespace's locale TLS is left default-initialized to a zero pointer that then gets dereferenced in the `isdigit()` macro and segfaults.
This has already been filed upstream https://sourceware.org/bugzilla/show_bug.cgi?id=32483 and appears to affect all versions of glibc including upstream glibc.
A RH glibc engineer has already done an initial evaluation and posted a patch upstream https://sourceware.org/pipermail/libc-alpha/2024-December/162893.html
The customer request is to backport this upstream patch and include it in RHEL8.10 (current production), RHEL 9.5 (currently in testing), and make sure that it is included in RHEL10.
Kindly let me know if we need to raise separate Jira's for RHEL 9 and RHEL 10.
Also, the customer has shared reproducer programs as attachment "reproducer.tar.gz" which I have attached to this Jira now.
- depends on
-
RHEL-72017 glibc: ctype.h macros segfault in multithreaded programs with multiple libc.so [rhel-9]
-
- Release Pending
-
-
RHEL-72018 glibc: ctype.h macros segfault in multithreaded programs with multiple libc.so [rhel-10]
-
- Release Pending
-
- is cloned by
-
RHEL-72017 glibc: ctype.h macros segfault in multithreaded programs with multiple libc.so [rhel-9]
-
- Release Pending
-
-
RHEL-72018 glibc: ctype.h macros segfault in multithreaded programs with multiple libc.so [rhel-10]
-
- Release Pending
-
- links to