tst-too-many-cleanups never completes

Daniel Jacobowitz drow at false.org
Mon Apr 16 18:49:22 PDT 2007


On Mon, Apr 16, 2007 at 09:14:37PM -0400, Mike Frysinger wrote:
> On Monday 16 April 2007, Daniel Jacobowitz wrote:
> > - It calls sleep expecting a cancellation point at nanosleep.  But
> > libc.so's sleep.c has "libc_hidden_proto(nanosleep)" which means it
> > always calls the libc.so version, never the wrapped version in
> > libpthread.so that's a cancellation point.  Delete that line from
> > sleep.c and usleep.c and now sleep/usleep start acting like
> > cancellation points.
> 
> i need to finish up my local cancellation handler rewrite and get it 
> merged ...

Or just move on to NPTL, tbh...

> > - It never terminates.  This is the bit I've got a question about - I
> > can't see how it ever would terminate.  Main returns, so we end up in
> > exit.  The manager thread sends a cancellation signal to every
> > thread.  But because we're already in a cancellation handler, SIGRT_1
> > is blocked.  So we'll spin forever in exit.  This is one of the
> > reasons you're not supposed to have infinite loops in your
> > cancellation handlers.
> 
> it did when i wrote it ;) and it does on glibc ...

Only on NPTL.  I tried LinuxThreads, and the same thing happens there
- not surprising, it's the same code.  Anyway, I'll take your advice
and disable the test.

-- 
Daniel Jacobowitz
CodeSourcery


More information about the uClibc mailing list