Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процессы сами останавливаются 
:(
    Опции темы
JekaZZ
Дата 23.12.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 6.10.2005

Репутация: нет
Всего: 3



Есть программа, которая запускает mplayer с помощью system(). Это делается в pthread потоке.

Код

int rc=0;
pthread_attr_t tattr;
    if (pthread_attr_init(&tattr)==0)
    {
        if (pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED))
        {
            m_logger->Error("%s:%d Unable to detach thread: %s", __FILE__, __LINE__, strerror(errno));
                        }
        rc=pthread_create(thread, &tattr, routine, arg);
        pthread_attr_destroy(&tattr);
    } else
    {
        m_logger->Warning("%s:%d Unable to init thread attrs: %s - set default", __FILE__, __LINE__, strerror(errno));
        rc=pthread_create(thread, NULL, routine, arg);

        if (!rc)
        {
            //Отсоединяем нить
            rc=pthread_detach(*thread);
        }
    }



В routine вызывается system("mplayer -dumpstream -dumpfile some_file some_stream");

Так вот вчера все работало, а сегодня с утра на запуске system("mplayer...") останавливается mplayer и вся программа. 
Смотрю 
Код

#ps -aux

в колонке STATE у mplayer-а стоит T, у пограммы - T1.

Разбудить прграмму на несколько секунд удается:
Код

#kill -CONT program_pid

После чего она снова переходит в T1. Если же за это время успеть дать команду на завершение потока плеера, плеер завершается и программа продолжает нормально работать. Сам mplayer kill-ом не будится.

Вручную из командной строки mplayer запускается и работает. В чем дело? Я совсем не понимаю  smile 

PM MAIL   Вверх
JekaZZ
Дата 23.12.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 6.10.2005

Репутация: нет
Всего: 3



Обнаружились новые ньюансы.
Если программу разбудить
Код

kill -CONT

то она сама не останавливается, работает нормально, до тех пор пока не попытаешься разбудить mplayer таким же образом. 
Тогда и плеер не работает и программа снова останавливается - переходит в T1.  smile 
PM MAIL   Вверх
vinick
Дата 23.12.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: 4
Всего: 22



попробуй  в вызове system перенаправить вывод mplayer'а  в dev/null
Код

system("mplayer ... &>/dev/null");

PM MAIL ICQ Jabber   Вверх
MAKCim
Дата 23.12.2008, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



JekaZZ
отладчиком/трассировщиком пройтись не судьба?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JekaZZ
Дата 24.12.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 6.10.2005

Репутация: нет
Всего: 3



>/dev/null не помог. Да и, собтвенно говоря, как он должен был помочь?

Ни отладчиком, ни трассировщиком не судьба: 
1) Я в линуксе только начал программировать.
2) Проект не мой, я его доделываю и переделываю. 
3) результате сборки проекта - 4 разделяемых библиотеки *.so и 6 выполняемых файлов. Все делается в консоли.

В чем может быть проблема? Под виртуалкой на той же системе все работает. Те же скомпилиные, под виртуалкой рабочие, бинарники на реальном железе виснут. Может в системе что накрылось? Почему система усыпляет поток?
PM MAIL   Вверх
MAKCim
Дата 24.12.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



JekaZZ
аргументы не принимаются
смотри трассировщиком
самое простое через strace
Код

# strace -f <your program> 2>log



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
vinick
Дата 24.12.2008, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: 4
Всего: 22



Цитата(JekaZZ @  24.12.2008,  11:40 Найти цитируемый пост)
>/dev/null не помог. Да и, собтвенно говоря, как он должен был помочь?

Просто подобное происходит на связке mc + gdb + многопоточное приложение, вот я и написал не подумавши. Это не тот случай, так что strace в помощь
PM MAIL ICQ Jabber   Вверх
JekaZZ
Дата 26.12.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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 )
Присоединённый файл  trace.zip 688,35 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1361 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.