<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">jack clients and the server on linux communicate via reading and writing through a FIFO. there's nothing unusual about read(2) showing up here - the client has asked the server for a port disconnect and is waiting for a response.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Nov 26, 2019 at 9:45 AM Ethan Funk <<a href="mailto:ethan@redmountainradio.com">ethan@redmountainradio.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="text-align:left;direction:ltr"><div>After days of testing, I got a crash (of sorts) out of my program.  More of a hang than a crash.  So I attached gdb to the process and looked around.  My main thread appears to be hung deep inside a jack call, via jack_port_disconnect().  This is a point in my code where it cleans up after an jack-attached media player that is done playing.  The player process terminates when it's jack connections are disconnected.  I re-started the code execution and then stopped it again to find that the main thread was still waiting at the same libc_read() spot.  After taking a look at the jack source code, I didn't find that jack_port_disconnect() would result in a read any place down the jack call chain.  To be fair to jack, I am still mostly unfamiliar with the library structure, so I could be missing something.  Any insight as to what I might be doing wrong?   The port I am passing to jack_port_disconnect() appears to be valid, unless my code is overwriting memory.  Backtrace of the main thread is below.</div><div><br></div><div>Thanks all.</div><div>Ethan...</div><div><br></div><div>(gdb) bt full</div><div>#0  __libc_read (nbytes=4, buf=0x7fffad4ed248, fd=5) at ../sysdeps/unix/sysv/linux/read.c:26</div><div>        resultvar = 18446744073709551104</div><div>        sc_cancel_oldtype = 0</div><div>        __arg3 = <optimized out></div><div>        _a2 = <optimized out></div><div>        sc_ret = <optimized out></div><div>        __value = <optimized out></div><div>        __arg1 = <optimized out></div><div>        _a3 = <optimized out></div><div>        resultvar = <optimized out></div><div>        resultvar = <optimized out></div><div>        __arg2 = <optimized out></div><div>        _a1 = <optimized out></div><div>#1  __libc_read (fd=5, buf=0x7fffad4ed248, nbytes=4) at ../sysdeps/unix/sysv/linux/read.c:24</div><div>No locals.</div><div>#2  0x00007fab6fe13ead in ?? () from /lib/x86_64-linux-gnu/libjack.so.0</div><div>No symbol table info available.</div><div>#3  0x00007fab6fe02e2a in ?? () from /lib/x86_64-linux-gnu/libjack.so.0</div><div>No symbol table info available.</div><div>#4  0x00007fab6fe03768 in ?? () from /lib/x86_64-linux-gnu/libjack.so.0</div><div>No symbol table info available.</div><div>#5  0x00007fab6fdf8598 in ?? () from /lib/x86_64-linux-gnu/libjack.so.0</div><div>No symbol table info available.</div><div>#6  0x0000564ac911610a in releaseQueueRecord (root=0x564ac9134260 <queueList>, rec=0x7fab3004c910, force=0 '\000') at data.c:473</div><div>[NOTE: this line is:    jack_port_disconnect(mixEngine->client, *port);      ]</div><div>        c = 1</div><div>        cmax = 2</div><div>        port = 0x564acaf81278</div><div>        prev = 0x564ac9134260 <queueList></div><div>        current = 0x7fab3004c910</div><div>        instance = 0x564acaf80be0</div><div>        logID = 9126049</div><div>        tmp = <optimized out></div><div>#7  0x0000564ac91057c5 in NextListItem (lastStat=2, curQueRec=0x564ac9134260 <queueList>, firstp=0x7fffad4ed418, sbtime=0x7fffad4ed41c, remtime=0, isPlaying=0x7fffad4ed416 "") at automate.c:811</div><div><br></div><div>.... Blah, blah, blah....</div></div>
_______________________________________________<br>
Linux-audio-dev mailing list<br>
<a href="mailto:Linux-audio-dev@lists.linuxaudio.org" target="_blank">Linux-audio-dev@lists.linuxaudio.org</a><br>
<a href="https://lists.linuxaudio.org/listinfo/linux-audio-dev" rel="noreferrer" target="_blank">https://lists.linuxaudio.org/listinfo/linux-audio-dev</a><br>
</blockquote></div>