This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
From: Andreas Jaeger <aj@suse.de> Date: 01 Jul 2000 11:47:33 +0200 >>>>> Andreas Jaeger writes: > I've get now failures running the linuxthreads tests on i686-linux in > the current CVS version. Can anybody confirm this? This happens only with static binaries (--disable-shared), the shared libraries look fine. Running linuxthreads/ex1 in gdb gives: Program received signal SIGSEGV, Segmentation fault. 0x8052fd7 in __geteuid () at ../sysdeps/unix/sysv/linux/i386/geteuid.c:47 47 int saved_errno = errno; (gdb) bt #0 0x8052fd7 in __geteuid () at ../sysdeps/unix/sysv/linux/i386/geteuid.c:47 #1 0x80546bc in __libc_init_secure () at ../sysdeps/generic/enbl-secure.c:32 #2 0x805474f in init (argc=1, argv=0xbffff7f4, envp=0xbffff7fc) at ../sysdeps/unix/sysv/linux/init-first.c:150 #3 0x804dffe in __libc_start_main (main=0x8048230 <main>, argc=1, ubp_av=0xbffff7f4, init=0x80480b4 <_init>, fini=0x80935c0 <_fini>, rtld_fini=0, stack_end=0xbffff7ec) at ../sysdeps/generic/libc-start.c:81 (gdb) p errno $1 = 0 (gdb) p saved_errno No symbol "saved_errno" in current context. The other test programs segfault at the same place. Any ideas what's broken? Yep. __pthread_initialize_minimal() hasn't been called yet. It is called from the libc constructor functions, but if you look at sysdeps/generic/libc-start.c, you'll see that __libc_init_secure() is called before __libc_init_first() which calls the constructors. I suppose that there is no problem when using the old method of getting at the per-thread errno (which is still used on everything < i686), but it fails for the stuff that uses the LDT, since the LDT hasn't been set up yet. I'm entirely not sure how to fix this. Calling __pthread_initialize_minimal from __libc_start_main() #ifndef SHARED is probably the easiest solution. Mark
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |