This is the mail archive of the libc-hacker@sources.redhat.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] |
Other format: | [Raw text] |
Thorsten Kukuk <kukuk@suse.de> writes: > Hi, > > On AMD64, the nptl/tst-execstack fails with kernel 2.6.0-test9 in > pthread_barrier_wait (&go_barrier); > > strace shows, that one process is doing a mmap, while a second > process is segfaulting at the same time. > > I'm using gcc 3.3.2 and binutils 2.14.90.0.7, all other tests passes. > > Does somebody else see this? Is this a kernel problem or a glibc one? The problem is a bug in dl-execstack. If the mprotect call succeeds (it does not succeed on the 2.4 Red Hat kernel), then we do not set dl_stack_flags. I propose the following patch, it passes the test now. Ok to commit? Andreas 2003-11-26 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/dl-execstack.c (_dl_make_stack_executable): Set dl_stack_flags always for success. ============================================================ Index: sysdeps/unix/sysv/linux/dl-execstack.c --- sysdeps/unix/sysv/linux/dl-execstack.c 25 Sep 2003 23:04:12 -0000 1.3 +++ sysdeps/unix/sysv/linux/dl-execstack.c 26 Nov 2003 09:39:20 -0000 @@ -40,7 +40,7 @@ _dl_make_stack_executable (void) { if (__mprotect ((void *) page, GL(dl_pagesize), PROT_READ|PROT_WRITE|PROT_EXEC|PROT_GROWSDOWN) == 0) - return 0; + goto return_success; if (errno != EINVAL) return errno; no_growsdown = true; @@ -91,7 +91,7 @@ _dl_make_stack_executable (void) { if (__mprotect ((void *) page, GL(dl_pagesize), PROT_READ|PROT_WRITE|PROT_EXEC|PROT_GROWSUP) == 0) - return 0; + goto return_success; if (errno != EINVAL) return errno; no_growsup = true; @@ -132,6 +132,8 @@ _dl_make_stack_executable (void) # error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP" #endif + + return_success: /* Remember that we changed the permission. */ GL(dl_stack_flags) |= PF_X; -- Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |