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]

Re: [PATCH] S/390: Fix makecontext with uc_link == NULL


On Monday, July 16, 2012 10:19:08 Thomas Schwinge wrote:
> 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 

Indeed, that should be moved. Could you send a patch, please?

Thanks,
Andreas
-- 
 Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
  SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
   GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
    GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]