popen() in multithreaded program - hangs?

Julian Elischer julian at elischer.org
Fri Sep 26 23:43:38 UTC 2008


xorquewasp at googlemail.com wrote:
> I'm trying to write a client for the jack audio connection kit
> (http://jackaudio.org), have hit an apparent bug and am not sure

what revision of FreeBSD?

> who's at fault.
> 
> This is the client:
> 
> --
> 
> #include <jack/jack.h>
> #include <err.h>
> 
> jack_port_t *input_port;
> jack_port_t *output_port;
> jack_client_t *client;
> 
> int
> main (void)
> {
>   jack_status_t status;
> 
>   client = jack_client_open ("cdemo", JackNoStartServer, &status, "default");
>   if (!client) errx (112, "client_open: could not");
> 
>   jack_client_close (client);
>   return 0;
> }
> 
> --
> 
> The jack_client_open() call never returns and the process can only be killed
> with SIGKILL. Tracing execution in gdb shows that the hang occurs in the
> popen() call in jack_get_tmpdir(), defined at client.c:114:
> 
>   http://trac.jackaudio.org/browser/trunk/jack/libjack/client.c
> 
> Is there a known issue with calling popen() in a multithreaded program? At
> the point of that call, on my system, there are three running threads.
> 
> Any help/advice on how to resolve this problem would be appreciated.
> 
> xw
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"



More information about the freebsd-hackers mailing list