mysterious hang in pthread_create
Andriy Gapon
avg at icyb.net.ua
Fri Aug 29 14:46:16 UTC 2008
Kostik, thanks!
on 29/08/2008 17:10 Kostik Belousov said the following:
> I am wondering why did you not fixed it youself with all this information.
I am wondering that myself now :-)
I got bogged in rtld details and simply didn't think about the solution
of doing setthreaded earlier.
I will try your patch a couple of hours later.
BTW, a forward question - should this patch help in the case of an
exception thrown (and caught) before main(), i.e. in constructors of
static/global objects?
> Anyway, patch below seems to work for me. David may have an opinion on
> the change.
>
> diff --git a/lib/libthr/thread/thr_init.c b/lib/libthr/thread/thr_init.c
> index f96bba9..785d610 100644
> --- a/lib/libthr/thread/thr_init.c
> +++ b/lib/libthr/thread/thr_init.c
> @@ -355,6 +355,9 @@ _libpthread_init(struct pthread *curthread)
> if (_thread_event_mask & TD_CREATE)
> _thr_report_creation(curthread, curthread);
> }
> +
> + if (_thr_isthreaded() == 0)
> + _thr_setthreaded(1);
> }
>
> /*
--
Andriy Gapon
More information about the freebsd-threads
mailing list