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.
Thanks all.
Ethan...