Infinite loop bug in libc_r on 4.x with condition variables and signals

John Baldwin jhb at FreeBSD.org
Fri Oct 29 14:09:12 PDT 2004


On Thursday 28 October 2004 07:41 pm, David Xu wrote:
> John Birrell wrote:
> >On Thu, Oct 28, 2004 at 03:54:07PM -0400, John Baldwin wrote:
> >>We've started testing on -current and are seeing several problems with
> >>libpthread.  Using a UP kernel (machines have single processor with HTT)
> >>seems to make it better, but we seem to be getting SIG 11's in
> >>pthread_testcancel() as well as the failed lock assertions that were
> >>mentioned earlier on the list in the PR.  Just running monodevelop from
> >> the bsd-sharp stuff mentioned earlier can break in that one of the
> >> processes dies with the assertion failure.  If you let the other
> >> processes run, then you can run it again and get the window to pop up,
> >> but then clicking on any of the controls results in the
> >> pthread_testcancel() crash.  FWIW, I think the reason that the stack
> >> traces look weird in the PR's thread may be due to catching a signal. 
> >> When we were looking at the problems with libc_r on 4.x we would get
> >> some weird looking backtraces sometimes when the assertion in
> >> uthread_sig.c that I added failed.  Seems that gdb doesn't handle the
> >> signal frames very well.
> >
> >I have a server running -current as of July 23 which runs a process that
> > often SIG 11's in pthread_testcancel() too. I've never been able to make
> > sense of the back trace because it always shows the initialisation path
> > for a module, yet for the process to run and serve web requests, that
> > initialisation path must have been completed. I've assumed there is a bug
> > in my code elsewhere in the application and that GDB is telling me the
> > truth.
>
> It would be nice if you could provide some example code, even if the code
> may contains bug, it is still good for me to see how pthread_cancel can
> cause SIG 11, because pthread_cancel seems checking everything carefully.

Unfortunately the only sample code I have right now is monodevelop built from 
the bsd-sharp stuff.  I don't have any smaller samples.  Note also that it's 
not pthread_cancel(), but pthread_testcancel().

-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org


More information about the freebsd-threads mailing list