LINUX.ORG.RU

timidity падает при загрузке, но запускается нормально руками

 


0

1

система ubuntu 12.04 x64

timidity запускается через /etc/init.d/timidity, и он добавлен в автозапуск.

физически он запускается следующей командой:

start-stop-daemon --start --chuid timidity --quiet --exec /usr/bin/timidity --pidfile /var/run/timidity/timidity.pid -- -Os -iAD < /dev/null >/dev/null 2>&1;

После загрузки компа midi не проигрываются, но если ввести руками в консоли sudo /etc/init.d/timidity start, то все запускается и работает.

После загрузки компа файл /var/run/timidity/timidity.pid обновляется, это навело меня на мысль, что демон запускается, но потом падает. Поэтому, я перенаправил вывод из /dev/null в файл и вот что получил:

Home directory /etc/timidity not ours.
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
Can't open pcm device 'default'.
Couldn't open ALSA pcm device (`s')

При этом после запуска руками содержимое файла следующее:

No protocol specified
xcb_connection_has_error() returned true
Home directory /etc/timidity not ours.
No protocol specified
Requested buffer size 32768, fragment size 8192
ALSA pcm 'default' set buffer size 30104, period size 3760 bytes

Т.е., такое впечатление, что при загрузке что-то еще недозагрузилось, или какой-то ресурс занят. Я пробовал гуглить - у людей проблема проявляется, то не только при запуске, а все время. В гугле так же советуют какие-то решения основанные pulseaudio, у меня ALSA. (вспоминаю pulseaudio как страшный сон) В гугле так же просят зачем-то вывод aplay -l. Так и не понял что он им дает, но по всей видимости он нужен для решения проблемы:

$ aplay -l
**** Список PLAYBACK устройств ****
карта 0: SB [HDA ATI SB], устройство 0: VT1708S Analog [VT1708S Analog]
  Подустройства: 1/1
  Подустройство №0: subdevice #0
карта 0: SB [HDA ATI SB], устройство 2: VT1708S Alt Analog [VT1708S Alt Analog]
  Подустройства: 1/1
  Подустройство №0: subdevice #0
карта 0: SB [HDA ATI SB], устройство 3: VT1708S Digital [VT1708S Digital]
  Подустройства: 1/1
  Подустройство №0: subdevice #0
карта 1: NVidia [HDA NVidia], устройство 3: HDMI 0 [HDMI 0]
  Подустройства: 1/1
  Подустройство №0: subdevice #0
карта 1: NVidia [HDA NVidia], устройство 7: HDMI 1 [HDMI 1]
  Подустройства: 1/1
  Подустройство №0: subdevice #0

Как бы узнать чего ему не хватает? Или лучше не парить мозг с этим init.d, а переделать, чтобы запускалось через upstart с перезапуском при падении?

Впринципе, есть вариант сделать скрипт:

sleep 10
/etc/init.d/timidity start

и запускать его через rc.local. Но вроде это как-то некошерно...

и он добавлен в автозапуск.

В каком месте? Не самым первым?

Как бы узнать чего ему не хватает?

Возможно, что не хватает переменных среды, посмотрите, есть ли у пользователя из под которого запускается переменные ″ALSA_*″, в первую очередь ″ALSA_CONFIG_PATH″ (переменные показывает комада ″set″).

В принципе, есть вариант сделать скрипт:

Попробуйте, если этот скрипт поможет, значит, действительно что-то не успевает стартануть, а если нет, тогда переменные среды.

mky ★★★★★
()
Ответ на: комментарий от mky

он добавлен в автозапуск следующим образом:

sudo update-rc.d timidity defaults 99

без числа 99 он тоже не работал. Это уже я экспериментировал.

Не знаю как показать командой set (она показывает какой-то очень большой скрпит), но env|grep ALSA ни под юзером ни под рутом ничего не показывает.

Такой скрпит я сделал. Помогает. Впринципе, работает, и можно было бы на этом успокоится, но интересно найти причину.

Кстати, оно раньше работало. Наверное, перестало работать после какого-то апдейта. Я им редко пользуюсь, поэтому не могу сказать точно момент когда оно перестало работать.

chabapok
() автор топика
Ответ на: комментарий от chabapok

Ну могу посоветовать запустить его под strace, с выводом в файл и сравнить запуск без ″sleep 10″ и с ним. Тогда может можно будет понять, чего не хватает. Но там будет куча строк в файлах.

Я им редко пользуюсь

Тогда проще забить, всё одно через несколько лет всё будет другое (systemd).

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.