Bug#935980: jackd2: Segfaults when qjackctl patchbay is activated
Hello Chris, I added it to your report guessing that it might be the issue you observed. Now I see your setup is way more complex than my test. To reveal some more information about your issue, you could install the package systemd-coredump, then in the journal should a backtrace appear after a crash. Additional a coredump should be collected for later investigation (coredumpctl list). More details might be available in the journal if dbgsym packages for related binaries are installed (more details in [1]). If additionally gdb is installed a coredump could be inspected by 'coredumpctl gdb [PID]'. Kind regards, Bernhard [1] https://wiki.debian.org/HowToGetABacktrace#Installing_the_debugging_symbols
Bug#935980: jackd2: Segfaults when qjackctl patchbay is activated
On 8/28/2019 12:29 PM, Christopher David Howie wrote: > jackd segfaults whenever the qjackctl patchbay is activated with a > non-empty set of patches. It's not clear to me exactly why this > happens, but it happens every time. I have done some additional testing on this and wanted to share the results. First, let me elaborate on my setup as some aspects may be relevant to the problem. * The network master is running jackd2 1.9.11 on Windows 10. * The network slave is running jackd2 1.9.12 on Debian Buster (using the provided Debian packages). * There is a qjackctl patchbay on the network master that patches all local output ports to the slave's network input ports, and the slave's network output ports to the local input ports. * There is a qjackctl patchbay on the network slave that patches various ports between the slave's local ports and Ardour. The bug is not 100% reproducible but it happens way more often than not (probably in the 90%+ range) and appears to be triggered by both patchbays being active (or, rather, all of the resulting port patches being made). If I restart everything and only active one of the patchbays (it does not matter which one) then the the slave jackd does not segfault. _Immediately_ upon activating the other patchbay, the slave jackd will almost certainly segfault. I have downgraded my jackd packages on the slave (jackd2, libjack-jackd2-0, and libjack-jackd2-dev) to their respective latest versions in stretch, which downgrades jackd from 1.9.12 (buster) to 1.9.10 (stretch). This fully resolves the problem, hinting that this segfault is a regression that was added after 1.9.10. (Side note: Bernhard's issue looks unrelated and I'm not sure why it was added as a reply to my report.) -- Chris Howie http://www.chrishowie.com http://en.wikipedia.org/wiki/User:Crazycomputers If you correspond with me on a regular basis, please read this document: http://www.chrishowie.com/email-preferences/ PGP fingerprint: 2B7A B280 8B12 21CC 260A DF65 6FCE 505A CF83 38F5 IMPORTANT INFORMATION/DISCLAIMER This document should be read only by those persons to whom it is addressed. If you have received this message it was obviously addressed to you and therefore you can read it. Additionally, by sending an email to ANY of my addresses or to ANY mailing lists to which I am subscribed, whether intentionally or accidentally, you are agreeing that I am "the intended recipient," and that I may do whatever I wish with the contents of any message received from you, unless a pre-existing agreement prohibits me from so doing. This overrides any disclaimer or statement of confidentiality that may be included on your message.
Bug#935980: jackd2: Segfaults when qjackctl patchbay is activated
Dear Maintainer, I tried to reproduce the issue, but unfortunately I receive no segmentation fault, instead a floating point exception. (By using the button with the play symbol at the middle bottom.) This happens there because the divisor frame_rate is zero. For this issue I could not find an upstream bugreport or even patch. Kind regards, Bernhard (gdb) bt #0 Jack::JackTransportEngine::SyncTimeout (this=this@entry=0x7f6fbf12b140, frame_rate=frame_rate@entry=0, buffer_size=buffer_size@entry=0) at ../common/JackTransportEngine.cpp:54 #1 0x7f6fbeeca382 in Jack::JackTransportEngine::CycleEnd (this=0x7f6fbf12b140, table=table@entry=0x56138aad5708, frame_rate=0, buffer_size=0) at ../common/JackTransportEngine.cpp:221 #2 0x7f6fbeedacbd in Jack::JackEngineControl::CycleEnd (table=0x56138aad5708, this=) at ../common/JackEngineControl.h:160 #3 Jack::JackEngine::Process (this=0x56138aad56c0, cur_cycle_begin=1105829020, prev_cycle_end=1104805827) at ../common/JackEngine.cpp:186 #4 0x7f6fbeed59de in Jack::JackLockedEngine::Process (prev_cycle_end=, cur_cycle_begin=, this=) at ../common/JackLockedEngine.h:261 #5 Jack::JackAudioDriver::ProcessGraphAsyncMaster (this=0x56138ab22820) at ../common/JackAudioDriver.cpp:249 #6 0x7f6fbeed5ad5 in Jack::JackAudioDriver::ProcessGraphAsync (this=this@entry=0x56138ab22820) at ../common/JackAudioDriver.cpp:236 #7 0x7f6fbeed645e in Jack::JackWaiterDriver::ProcessNull (this=0x56138ab22820) at ../common/JackTimedDriver.cpp:79 #8 0x7f6fbeee445a in Jack::JackWaitThreadedDriver::Execute (this=0x56138ad16150) at ../common/JackWaitThreadedDriver.cpp:46 #9 0x7f6fbeed28d6 in Jack::JackPosixThread::ThreadHandler (arg=0x56138ad16168) at ../posix/JackPosixThread.cpp:59 #10 0x7f6fbee6efa3 in start_thread (arg=) at pthread_create.c:486 #11 0x7f6fbe9be4cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 (gdb) list JackTransportEngine.cpp:54 50 51 // compute the number of cycle for timeout 52 void JackTransportEngine::SyncTimeout(jack_nframes_t frame_rate, jack_nframes_t buffer_size) 53 { 54 long buf_usecs = (long)((buffer_size * (jack_time_t)100) / frame_rate); 55 fSyncTimeLeft = fSyncTimeout / buf_usecs; 56 jack_log("SyncTimeout fSyncTimeout = %ld fSyncTimeLeft = %ld", (long)fSyncTimeout, (long)fSyncTimeLeft); 57 } 58 # Buster/stable amd64 qemu VM 2019-08-28 apt update apt dist-upgrade apt install systemd-coredump xserver-xorg lightdm openbox xterm fakeroot gdb jackd2 jackd2-dbgsym libjack-jackd2-0-dbgsym apt build-dep jackd2 reboot export DISPLAY=:0 jackd -R -d net -a 10.0.2.15 export DISPLAY=:0 LANG=C qjackctl # press the play button in the middle # jackd gets a floating point exception mkdir /home/benutzer/source/jackd2/orig -p cd/home/benutzer/source/jackd2/orig apt source jackd2 cd ## benutzer@debian:~$ LANG=C jackd -R -d net -a 10.0.2.15 jackdmp 1.9.12 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2016 Grame. Copyright 2016-2017 Filipe Coelho. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details no message buffer overruns no message buffer overruns no message buffer overruns JACK server starting in realtime mode with priority 10 self-connect-mode is "Don't restrict self connect requests" NetDriver started in async mode without Master's transport sync. Waiting for a master... Initializing connection with ... Network parameters Name : debian Protocol revision : 8 MTU : 1500 Master name : Slave name : debian ID : 0 Transport Sync : no Send channels (audio - midi) : -1 - -1 Return channels (audio - midi) : -1 - -1 Sample rate : 0 frames per second Period size : 0 frames per period Network latency : 5 cycles SampleEncoder : Float Slave mode : async Recv fd = 7 err = Resource temporarily unavailable Recv connection lost error Driver is restarted JackTimedDriver::Process XRun = 12 usec Restarting driver... JackTimedDriver::Process XRun = 4 usec NetDriver started in async mode without Master's transport sync. JackTimedDriver::Process XRun = 3 usec JackTimedDriver::Process XRun = 3 usec JackTimedDriver::Process XRun = 3 usec Waiting for a master... JackTimedDriver::Process XRun = 4 usec JackTimedDriver::Process XRun = 3 usec Initializing connection with ... Network parameters Name : debian JackTimedDriver::Process XRun = 4 usec Protocol revision : 8 MTU : 1500 Master name : Slave name : debian ID : 0 Transport Sync : no Send channels (audio - midi) : -1 - -1 Return channels (audio - midi) : -1 - -1 Sample rate : 0 frames per second Period size : 0 frames per period Network latency : 5 cycles SampleEncoder : Float JackTimedDriver::Process XRun = 3 usec Slave mode : async
Bug#935980: jackd2: Segfaults when qjackctl patchbay is activated
Package: jackd2 Version: 1.9.12~dfsg-2 jackd segfaults whenever the qjackctl patchbay is activated with a non-empty set of patches. It's not clear to me exactly why this happens, but it happens every time. I run jackd like so: $ jackd -R -d net -a 192.168.3.3 Here is jackd's output: --8<-- jackdmp 1.9.12 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2016 Grame. Copyright 2016-2017 Filipe Coelho. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details JACK server starting in realtime mode with priority 10 self-connect-mode is "Don't restrict self connect requests" NetDriver started in async mode without Master's transport sync. Waiting for a master... Initializing connection with burke... Network parameters Name : liz Protocol revision : 8 MTU : 1500 Master name : burke Slave name : liz ID : 5 Transport Sync : no Send channels (audio - midi) : 12 - 0 Return channels (audio - midi) : 14 - 0 Sample rate : 44100 frames per second Period size : 256 frames per period Network latency : 5 cycles SampleEncoder : Float Slave mode : async JackGraphManager::Connect already connected port_src = 64 port_dst = 41 JackGraphManager::Connect already connected port_src = 65 port_dst = 42 JackGraphManager::Connect already connected port_src = 47 port_dst = 41 JackGraphManager::Connect already connected port_src = 48 port_dst = 42 JackGraphManager::Connect already connected port_src = 52 port_dst = 41 JackGraphManager::Connect already connected port_src = 53 port_dst = 42 JackGraphManager::Connect already connected port_src = 43 port_dst = 78 JackGraphManager::Connect already connected port_src = 90 port_dst = 78 JackGraphManager::Connect already connected port_src = 44 port_dst = 82 JackGraphManager::Connect already connected port_src = 91 port_dst = 82 JackGraphManager::Connect already connected port_src = 59 port_dst = 41 JackGraphManager::Connect already connected port_src = 60 port_dst = 42 JackGraphManager::Connect already connected port_src = 73 port_dst = 41 JackGraphManager::Connect already connected port_src = 74 port_dst = 42 JackGraphManager::Connect already connected port_src = 77 port_dst = 49 JackGraphManager::Connect already connected port_src = 77 port_dst = 70 JackGraphManager::Connect already connected port_src = 89 port_dst = 49 JackGraphManager::Connect already connected port_src = 89 port_dst = 70 JackGraphManager::Connect already connected port_src = 64 port_dst = 41 JackGraphManager::Connect already connected port_src = 65 port_dst = 42 JackGraphManager::Connect already connected port_src = 1 port_dst = 27 JackGraphManager::Connect already connected port_src = 59 port_dst = 41 JackGraphManager::Connect already connected port_src = 60 port_dst = 42 JackGraphManager::Connect already connected port_src = 43 port_dst = 78 JackGraphManager::Connect already connected port_src = 44 port_dst = 82 JackGraphManager::Connect already connected port_src = 77 port_dst = 49 JackGraphManager::Connect already connected port_src = 77 port_dst = 70 JackGraphManager::Connect already connected port_src = 90 port_dst = 78 JackGraphManager::Connect already connected port_src = 91 port_dst = 82 --8<-- At this point, I enable the patchbay in qjackctl. jackd immediately terminates with "Segmentation fault" and no further output. -- Chris Howie http://www.chrishowie.com http://en.wikipedia.org/wiki/User:Crazycomputers If you correspond with me on a regular basis, please read this document: http://www.chrishowie.com/email-preferences/ PGP fingerprint: 2B7A B280 8B12 21CC 260A DF65 6FCE 505A CF83 38F5 IMPORTANT INFORMATION/DISCLAIMER This document should be read only by those persons to whom it is addressed. If you have received this message it was obviously addressed to you and therefore you can read it. Additionally, by sending an email to ANY of my addresses or to ANY mailing lists to which I am subscribed, whether intentionally or accidentally, you are agreeing that I am "the intended recipient," and that I may do whatever I wish with the contents of any message received from you, unless a pre-existing agreement prohibits me from so doing. This overrides any disclaimer or statement of confidentiality that may be included on your message.