Single xrun appears to crash Ardour 5.8 (but it's been happening from 5.0 on)

Lately, and never before Ardour5, when I’m in a live multitrack recording session, Ardour will suddenly crash at no apparent predictable time or for any other reason than that their may have been a single xrun occurrence (that, once Ardour has simply vanished qjackctl’s record of xruns skyrockets).

I’ve done everything I know of to make everything happy (a buffer that is most jackd friendly, and big), all the required set up for realtime scheduling, etc.–I might add that I’ve been happily using jack and ardour for years so none of this set up is new to me. Additionally, the machine I’m using is quite fast and powerful and it’s writing to an ssd. It’s hard for me to imagine that it’s somehow incapable of something that an RPi running Ardour2 can do for hours at a time (most recently, 8 tracks recorded for 5 hours without so much as a single xrun–on the RPi).

Below is an excerpt from qjackctl’s messages if there’s anyone out there who might see something they recognize. I’m going to create a backtrace and file a bug report but this will require me starting a recording and walking away since I have no idea whether it will happen within 5 minutes of starting or an hour or who knows how long.

So I’m wondering if anyone else has run across this sort of an issue. Thanks in advance. If anyone recognizes this behavior, let’s chat and exchange hardware info.

Excerpt from qjackctl’s log:


Acquire audio card Audio2
creating alsa driver … hw:X18XR18,0|hw:X18XR18,0|2048|3|48000|0|0|nomon|swmeter|-|32bit
configuring for 48000Hz, period = 2048 frames (42.7 ms), buffer = 3 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 3 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 3 periods for playback
14:05:45.713 JACK connection change.
14:05:45.717 Server configuration saved to “/home/studio/.jackdrc”.
14:05:45.718 Statistics reset.
14:05:45.739 Client activated.
14:05:45.739 Patchbay deactivated.
14:05:45.812 JACK connection graph change.
14:05:51.623 JACK connection graph change.
14:05:54.190 JACK connection graph change.
14:05:54.271 JACK connection graph change.
14:05:55.713 JACK connection graph change.
14:05:55.975 JACK connection change.
14:05:55.976 JACK connection graph change.
14:05:56.275 JACK connection change.
14:05:56.278 JACK connection graph change.
14:05:56.575 JACK connection change.
14:05:56.576 JACK connection graph change.
14:05:56.829 JACK connection change.
14:05:56.830 JACK connection graph change.
14:05:57.036 JACK connection change.
14:05:57.085 JACK connection graph change.
14:05:57.386 JACK connection change.
14:05:57.388 JACK connection graph change.
14:05:57.591 JACK connection change.
14:05:57.600 JACK connection graph change.
14:05:57.982 JACK connection change.
14:05:57.984 JACK connection graph change.
14:05:58.280 JACK connection change.
14:05:58.281 JACK connection graph change.
14:05:58.581 JACK connection change.
14:05:58.583 JACK connection graph change.
JackGraphManager::Connect already connected port_src = 4 port_dst = 62
JackGraphManager::Connect already connected port_src = 5 port_dst = 65
JackGraphManager::Connect already connected port_src = 6 port_dst = 68
JackGraphManager::Connect already connected port_src = 1 port_dst = 37
JackGraphManager::Connect already connected port_src = 7 port_dst = 71
JackGraphManager::Connect already connected port_src = 10 port_dst = 80
JackGraphManager::Connect already connected port_src = 11 port_dst = 83
JackGraphManager::Connect already connected port_src = 2 port_dst = 56
JackGraphManager::Connect already connected port_src = 3 port_dst = 59
JackGraphManager::Connect already connected port_src = 8 port_dst = 74
JackGraphManager::Connect already connected port_src = 8 port_dst = 77
JackGraphManager::Connect already connected port_src = 86 port_dst = 19
JackGraphManager::Connect already connected port_src = 87 port_dst = 20
JackGraphManager::Connect already connected port_src = 51 port_dst = 35
JackGraphManager::Connect already connected port_src = 52 port_dst = 36
JackGraphManager::Connect already connected port_src = 1 port_dst = 53
14:05:58.788 JACK connection change.
16:38:40.057 XRUN callback (1).
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
16:38:40.676 XRUN callback (9 skipped).
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = ardour was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 1 val2 = 37
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 1 val2 = 53
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 2 val2 = 56
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 3 val2 = 59
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 4 val2 = 62
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 5 val2 = 65
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 6 val2 = 68
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 7 val2 = 71
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 8 val2 = 74
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 8 val2 = 77
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 10 val2 = 80
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 11 val2 = 83
16:38:41.704 JACK connection graph change.
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 51 val2 = 35
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 52 val2 = 36
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 86 val2 = 19
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 12 val1 = 87 val2 = 20
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 10 val1 = 37 val2 = 0
Cannot write socket fd = 13 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = ardour notification = 10 val1 = 39 val2 = 0
Cannot write socket fd = 13 err = Broken pipe

Most likely you're confusing cause and effect. The xrun probably occurs because Ardour is crashing, rather than the other way around.

Crashes need debugging. http://ardour.org/debugging_ardour explains how you can help us do this. Also, http://tracker.ardour.org/ is the place for this sort of thing.

Could this be http://tracker.ardour.org/view.php?id=6478 ?

To rule out the possibility that there is some instability in the machine itself (etc. usb) it might be useful to make long recordings also with other programs than ardour, Audacity for example.

To rule out configuration errors you might want to record with another readily configured system like AVLinux.

I have not yet migrated to Ardour 5 (about to do it soon) and am still using 4.7. It has been rock solid for me. You could also try recording with that.

Thanks for the comments. Issue id 0007335 has been posted, backtrace attached.
I will indeed be using a different application to record since I have many live recordings to do over the upcoming couple of weeks. I’ll be happy (so to speak) to post whether the issue appears with other jack-dependent applications.

Looking at the backtrace in http://tracker.ardour.org/view.php?id=7335, it does seem like the same or similar issue as #6478. Until that’s conclusively fixed, there is a straightforward workaround: disable “Show waveforms while recording” in Preferences|Appearance|Editor.

@chadwellAK: the problem has nothing whatsoever to do with JACK. We understand in very fine detail what the nature of the crash is, but despite many, many hours of thinking about it and testing things, we still do not understand how it can happen.

colinf’s advice is the correct path, and is absolutely guaranteed to fix this particular crash (which is extremely difficult to reproduce).

I’ll give that workaround a thorough going through tonight and hopefully I’ll have 11 tracks of 8 hours of nonstop preamp noise in the morning. Thanks for the info.

Incidentally, I don’t mind building and running other builds if I can do anything to provide more information (of which you already have much I’m guessing).

Well that certainly did the trick. Thank you.