Compiling asterisk against uclibc-0.9.29
Rob Landley
rob at landley.net
Sun Oct 26 02:23:55 UTC 2008
On Tuesday 21 October 2008 01:47:48 Ming-Ching Tiew wrote:
> Rob Landley wrote:
> > On Monday 20 October 2008 22:25:37 Ming-Ching Tiew wrote:
> >> 5. In the bugged case, the daemonized process did not
> >> actually die, it lingers around ( it's one of the 3 processes ).
> >> Further down in the source, it calls ast_makesocket().
> >> But in ast_makesocket() it was stuck in pthread_create()
> >> and never return ( this accounts for the additional 2 process
> >> created ).
> >>
> >> Strange thing is that if I don't call daemon() or if I compile
> >> daemon() into asterisk source, then ast_makesocket()
> >> ( and hence pthread_create() ) will not block.
> >
> > Ok, so this is a case of calling pthread_create() after calling
> > daemon(), except the simple test didn't cause a problem?
>
> I only found this out today. My simple test case I only tested
> daemon(). So they did not cause a problem. I haven't
> gotten to test calling daemon() and pthread_create()
> in my test cases.
It turns out this isn't a new problem, by the way. Here's an irc conversation
I was in a year ago that I'd forgotten:
http://ibot.rikers.org/%23uclibc/20070928.html.gz
Is there a bug tracker entry on this? It seems like the problem is doing a
fork() without doing an exec, and then calling pthread_create() from the
child process (which is not the thread group leader), and it never returns.
Rob
More information about the uClibc
mailing list