glibc-2.3 pthreads broken
Posted: Mon Oct 21, 2002 6:49 pm
Hi
I've been trying to upgrade my system to glibc-2.3.1 for a while now, and I've tracked down the bug to something I think is a grsecurity/PaX bug/incompatibility. Some background: I'm runnig a linux-2.4.19 box with grsecurity-1.9.7d, NOEXEC, SEGMEXEC, MPROTECT, ASLR, RANDKSTACK, RANDUSTACK, RANDMMAP, RANDEXEC, KMEM are set. Everything is compied with gcc-3.2.
After compiling glibc-2.3.1 (same error with 2.3) and running make check I get failure in two tests linking statically against the pthread library. When I install, all binaries linked against pthread exit with a SEGFAULT. I ran a strace on one of these programs (ls), and found that the last call is to modify_ldt, which fails. I tried disabling SEGMEXEC on the binary and it started working! (func = 1, so it should be the block in arch/i386/kernel/ldt.c:write_ldt that fails.)
Any suggestions on how this can be fixed in the kernel, or is it the pthreads implementation that wants to access memory above 1.5GB?
I've been trying to upgrade my system to glibc-2.3.1 for a while now, and I've tracked down the bug to something I think is a grsecurity/PaX bug/incompatibility. Some background: I'm runnig a linux-2.4.19 box with grsecurity-1.9.7d, NOEXEC, SEGMEXEC, MPROTECT, ASLR, RANDKSTACK, RANDUSTACK, RANDMMAP, RANDEXEC, KMEM are set. Everything is compied with gcc-3.2.
After compiling glibc-2.3.1 (same error with 2.3) and running make check I get failure in two tests linking statically against the pthread library. When I install, all binaries linked against pthread exit with a SEGFAULT. I ran a strace on one of these programs (ls), and found that the last call is to modify_ldt, which fails. I tried disabling SEGMEXEC on the binary and it started working! (func = 1, so it should be the block in arch/i386/kernel/ldt.c:write_ldt that fails.)
Any suggestions on how this can be fixed in the kernel, or is it the pthreads implementation that wants to access memory above 1.5GB?