Скажу сразу, что проблема повторяется на всех вёдрах (generic, rt, lowlatency), проверил на двух дистрах: Fedora 19, UbuntuStudio 13.10.
В общем стартую джек с минимальным рабочим буффером (128) для E-MU 0202 USB, включаю guitarix, играю значит сижу. Постепенно происходят всяческие xrun-ы. А потом бац! И всё, зависон, звука нет, никаких сообщений от jackd об xrun-ах, только одно сообщение от альсы:
ALSA: prepare error for playback on "hw:USB" (Broken pipe)
UI в guitarix висит, пытаюсь прибить jackd по ^C, guitarix «отлипает» и сообщает о том, что jack упал. Но сам процесс jackd остаётся недобитым, и никак его после более не прибить, никакими SIGKILL-ами, никакими хардварными отключениями шнуров, он будет висеть до перезагрузки, и это НЕ defunct-процесс. В чём соль? Багофича? Можно как-то на этой карточке в реалтайме играть?
Вот вывод jackd:
$ jackd -dalsa -dhw:USB -r96000 -p128
jackdmp 1.9.10
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2013 Grame.
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
audio_reservation_init
Acquire audio card Audio2
creating alsa driver ... hw:USB|hw:USB|128|2|96000|0|0|nomon|swmeter|-|32bit
configuring for 96000Hz, period = 128 frames (1.3 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 24bit little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 24bit little-endian
ALSA: use 2 periods for playback
JackEngine::XRun: client = gx_head_amp was not finished, state = Triggered
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_amp was not finished, state = Triggered
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_amp was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_amp was not finished, state = Triggered
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Triggered
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackEngine::XRun: client = gx_head_fx was not finished, state = Running
JackAudioDriver::ProcessGraphAsyncMaster: Process error
ALSA: prepare error for playback on "hw:USB" (Broken pipe)
JackAudioDriver::ProcessAsync: read error, stopping...
^CJack main caught signal 2
Cannot write socket fd = 11 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = gx_head_amp notification = 12 val1 = 1 val2 = 5
А вот на встроенной шлакокарте в ноутбуке, — под Fedora 19 с RT-ведром от CCRMA можно спокойненько играть в реалтайме с 128 буффером с очень редкими xrun-ами.
И вообще, ладно бы просто сыпались xrun-ы на EMU, но ведь тупо виснет намертво и не отлипает, картой не попользоваться до перезагрузки. Причём ребут возможен только топорным зажатием кнопки выключения, потому что система никак после такого зависона до конца не может выключиться, а ждёт пока jackd наконец завершится до бесконечности, ведь SIGKILL-ы ему не почём.
Это лечится? Как?