Date: Fri, 26 Sep 2008 23:27:11 +0100 From: xorquewasp@googlemail.com To: freebsd-hackers@freebsd.org Subject: popen() in multithreaded program - hangs? Message-ID: <20080926222711.GA74003@logik.internal.network>
next in thread | raw e-mail | index | archive | help
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 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080926222711.GA74003>