![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
JekaZZ |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
Есть программа, которая запускает mplayer с помощью system(). Это делается в pthread потоке.
В routine вызывается system("mplayer -dumpstream -dumpfile some_file some_stream"); Так вот вчера все работало, а сегодня с утра на запуске system("mplayer...") останавливается mplayer и вся программа. Смотрю
в колонке STATE у mplayer-а стоит T, у пограммы - T1. Разбудить прграмму на несколько секунд удается:
После чего она снова переходит в T1. Если же за это время успеть дать команду на завершение потока плеера, плеер завершается и программа продолжает нормально работать. Сам mplayer kill-ом не будится. Вручную из командной строки mplayer запускается и работает. В чем дело? Я совсем не понимаю ![]() |
||||||
|
|||||||
JekaZZ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
Обнаружились новые ньюансы.
Если программу разбудить
то она сама не останавливается, работает нормально, до тех пор пока не попытаешься разбудить mplayer таким же образом. Тогда и плеер не работает и программа снова останавливается - переходит в T1. ![]() |
|||
|
||||
vinick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 4 Всего: 22 |
попробуй в вызове system перенаправить вывод mplayer'а в dev/null
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
JekaZZ,
отладчиком/трассировщиком пройтись не судьба? ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
JekaZZ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
>/dev/null не помог. Да и, собтвенно говоря, как он должен был помочь?
Ни отладчиком, ни трассировщиком не судьба: 1) Я в линуксе только начал программировать. 2) Проект не мой, я его доделываю и переделываю. 3) результате сборки проекта - 4 разделяемых библиотеки *.so и 6 выполняемых файлов. Все делается в консоли. В чем может быть проблема? Под виртуалкой на той же системе все работает. Те же скомпилиные, под виртуалкой рабочие, бинарники на реальном железе виснут. Может в системе что накрылось? Почему система усыпляет поток? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
JekaZZ,
аргументы не принимаются смотри трассировщиком самое простое через strace
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
vinick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 4 Всего: 22 |
||||
|
||||
JekaZZ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
strace останавливается на следующих строках:
[pid 13546] stat64("/home/itvuser/.itvmedia/itv/data/channel_bestrussiantv.xml.enc/00000000.stream", <unfinished ...> [pid 13491] ioctl(29, FIONREAD <unfinished ...> [pid 13486] select(0, NULL, NULL, NULL, {0, 1000} <unfinished ...> [pid 13546] <... stat64 resumed> 0xb3c1930c) = -1 ENOENT (No such file or directory) [pid 13491] <... ioctl resumed> , [0]) = 0 [pid 13546] nanosleep({0, 10000000}, <unfinished ...> [pid 13491] nanosleep({0, 10000000}, <unfinished ...> [pid 13545] <... rt_sigaction resumed> {SIG_DFL}, 8) = 0 [pid 13545] stat64("/root/.mplayer/ch1?sid=28515CDA35B15108FA0AB26B49BA6273AE2794352BD7907FB226CED157E8688F.conf", 0xbfb7a320) = -1 ENOENT (No such file or directory) [pid 13545] ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 [pid 13545] ioctl(0, SNDCTL_TMR_START or TCSETS где home/itvuser/.itvmedia/itv/data/channel_bestrussiantv.xml.enc/00000000.stream - файл дампа, в который mplayer пишет поток. Вот то же самое место, но с запущенным вручную mplayer из командной строки: rt_sigaction(SIGCHLD, {0x8078d60, [CHLD], SA_RESTART}, {SIG_DFL}, 8) = 0 rt_sigaction(SIGTERM, {0x8078d90, [TERM], SA_RESTART}, {SIG_DFL}, 8) = 0 rt_sigaction(SIGHUP, {0x8078d90, [HUP], SA_RESTART}, {SIG_DFL}, 8) = 0 rt_sigaction(SIGINT, {0x8078d90, [INT], SA_RESTART}, {SIG_DFL}, 8) = 0 rt_sigaction(SIGQUIT, {0x8078d90, [QUIT], SA_RESTART}, {SIG_DFL}, 8) = 0 rt_sigaction(SIGPIPE, {0x8078d90, [PIPE], SA_RESTART}, {SIG_DFL}, 8) = 0 stat64("/root/.mplayer/ch1?sid=C099C45A8D095910624A7A8371F2FA73760F0C9D537718E75A5E56611F305027.conf", 0xbfa5b7b0) = -1 ENOENT (No such file or directory) ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig -icanon -echo ...}) = 0 write(1, "\nPlaying mms://69.1.72.2/ch1?sid"..., 99 Playing mms://69.1.72.2/ch1?sid=C099C45A8D095910624A7A8371F2FA73760F0C9D537718E75A5E56611F305027. ) = 99 open("mms://69.1.72.2/ch1?sid=C099C45A8D095910624A7A8371F2FA73760F0C9D537718E75A5E56611F30.ifo", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) В таком случае плеер работает. Помогите разобраться. Это сообщение отредактировал(а) JekaZZ - 26.12.2008, 13:25 Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |