This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! On Thu, 12 Jul 2012 09:38:35 -0400, Carlos O'Donell <carlos_odonell@mentor.com> wrote: > On 7/12/2012 8:19 AM, Andreas Krebbel wrote: > >> Do we have a testcase that covers this failure? > >> > >> If we don't, could you try to work one up? > > > > stdlib/tst-makecontext already calls makecontext with uc_link == NULL > > but the function invoked in the context does explicitly call exit (0). > > Removing this enables the testcase to cover that problem as well. > > * stdlib/tst-makecontext.c: Remove explicit exit call. > > Excellent. The testcase changes look good to me and match what > SuSv2 says about a returning from a context where uc_link is > zero e.g. "the thread will exit when this context returns." > > I'm happy with this, thanks for enhancing the testcase to cover > the failure scenario. I already raised this topic in <http://news.gmane.org/find-root.php?message_id=%3C87lijq5h72.fsf@schwinge.name%3E>: | [a bug is only seen] when returning from a context with Âuc_link == | NULLÂ, which is not exercised in the testsuite. | | I first though about simply removing the Âexit (0) from | stdlib/tst-makecontext.c:cf (which would then test exactly this case), | but apparently it is not specified which status value to use for exit in | this case -- libc.info: ÂIf `uc_link' was a null pointer the application | terminates in this case. -- so it is not trivial to test for. (Maybe | worth specifying? EXIT_SUCCESS (0)?) At that time, I also worked on reviewing all glibc ports with respect to that topic (Âexit (0) if Âuc_link == NULLÂ) -- my notes included: S390-32: sysdeps/unix/sysv/linux/s390/s390-32/makecontext.c:__makecontext_ret missing handling completely S390-64: sysdeps/unix/sysv/linux/s390/s390-64/makecontext.c:__makecontext_ret missing handling completely ... which you have now fixed -- I'll try to resume reviewing all other ports. (And I think I somewhere have a patch for SH already.) My other notes from that time were: i386: sysdeps/unix/sysv/linux/i386/makecontext.S:L(exitcode): seems OK x86_64: sysdeps/unix/sysv/linux/x86_64/__start_context.S: 2: is misplaced, should be after the movq %rax, %rdi SPARC32: sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S:__start_context can't tell SPARC64: sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c:__makecontext_ret missing handling completely GrÃÃe, Thomas
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] |