libstdc++ debugging, was:Re: Heads up: Several thousand g++ and libstdc++ test failures on sparc[64]
Andreas Tobler
toa@pop.agri.ch
Thu Oct 9 15:17:00 GMT 2003
Pétur Runólfsson wrote:
> 1) The problem also shows up on i386-pc-solaris2.9
> http://gcc.gnu.org/ml/gcc-testresults/2003-10/msg00348.html
> so it's a Solaris problem, not a Sparc problem.
Aha, wasn't aware of.
>
> 2) The testcases testsuite/thread/pthread*.cc are not failing.
> This of course doesn't mean they are succeeding, but it's a strong
> hint. These testcases contain:
> // { dg-options "-D_GLIBCXX_ASSERT -pthreads" { target *-*-solaris* } }
> so it seems that compiling with -pthreads fixes the problem.
>
> My current theory is that __gthread_active_p() is for some reason
> returning true when it should return false on Solaris. This should
> be easy to check.
Hm, still not that easy to check, tried the thing below :)
I don't seem to be able to set breakpoints in this code, sigh.
>
> If this is the case, then there are two options for fixing the
> bug.
>
> 1) Fix gthr on Solaris.
>
> 2) Change use of __gthread_active_p() and __gthread_once() from:
[snip]
> that is, the "else" is removed, everything else is as before.
Bingo, did that and now it seems much better.
Wow!!!
>
> So long as __gthread_active_p() always returns true when thread
> support is enabled (and this seems to be the case since the
> pthread*.cc test cases succeed), this should be threadsafe.
I do a sync and rebuild the libstdc++ now. Afterwards I run the suite again.
Thanks again!
Regards,
Andreas
More information about the Libstdc++
mailing list