Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / segmentation fail, inittab и ps x / 24 сообщений из 24, страница 1 из 1
13.06.2007, 18:03:14
    #34592807
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
Есть приложение, которое висит в inittab и необходимо его иногда перезапускать. Есть у этого приложения два дополнительных свойства:
1) Перезапускается путем посылки сигнала SIGUSR1 (ловит сигнал, ставит флаг, потом его читает из бесконечного цикла из main и бьет объекты).
2) На данной стадии развития приложения не умеет корректно завершаться и падает в sigmentaion fail.

Значит, перезапуск обстоит следующим образом: посылается сигнал на убийство, потом сразу же читается из ps x запущено ли приложение (назовем его П1).

Что происходит в данный момент? Приложение (П1) запускается через inittab не непосредственно, а через скрипт (С1). Этот скрипт выполняет перед запуском П1 некоторую работу, разделяя ее sleep-ами. Потом он запускает П1. Так вот. Когда когда приложению приходит сигнал оно рушиться вместе со скриптом, inittab пытается поднять этот скрипт по новой. Он поднимает его нормально, С1 потом поднимает П1, и все хорошо. Но если во время краха или сразу после него (неизвстно, но непосредственно после посылки сигнала SIGUSR1) происходит запрос у "ps x", то система виснет намертво.

Такая вот печальная история. Что тут не корректного и как это исправить?
...
Рейтинг: 0 / 0
13.06.2007, 18:20:43
    #34592861
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
Привожу этот ps при котором происходит зависание:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
debug_if_need "test ps 1/5: ps x..."
ps x
debug_if_need "test ps 2/5: ps x | grep $SERVER_NAME"
ps x | grep $SERVER_NAME
debug_if_need "test ps 3/5: ps x | grep $SERVER_NAME | grep -v grep"
ps x | grep $SERVER_NAME | grep -v grep
debug_if_need "test ps 4/5: ps x | grep $SERVER_NAME | grep -v grep | wc -l"
ps x | grep $SERVER_NAME | grep -v grep | wc -l
debug_if_need "test ps 5/5: working continue"

N_THREADS="`ps x | grep $SERVER_NAME | grep -v grep | wc -l`"
debug_if_need "Amounth of threads is $N_THREADS"
if [ $N_THREADS -eq "0" ]; then
    echo_if_need "$SERVER_NAME_ECHO stoped."
    exit - 1 
else
    echo_if_need "$SERVER_NAME_ECHO running."
    exit  0 
fi


Система отдает предпочтение выделенным ps.
ПС: debuf_if_need это всего лишь echo "$1" в if-е, который проверяет флаг, надо ли выводить отладочные сообщения.

ППС: В консоль не выводится сообщение sigmentation fail. По всей видимости зависание происходит во время краха приложения

ПППС: Если поставить задержку перед ps, чтобы крах гарантированно завершился, то все нормально.

Проблема ядра? Решить никак?
...
Рейтинг: 0 / 0
13.06.2007, 19:31:40
    #34593039
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
" На данной стадии развития приложения не умеет корректно завершаться и падает в sigmentaion fail." - это как?!
Ну и стиль у вас

Для начала развейте приложение до того, чтобы оно корректно завершалось, а потом ловите баги. А то получается баг на баге, а потом баги ищите.


--------------
Если враг не сдается - его перегружают
...
Рейтинг: 0 / 0
13.06.2007, 22:37:05
    #34593250
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
В целом подход тоже супер - останавливаем приложение,все виснет, ага, бага в ядре! Гениально!
...
Рейтинг: 0 / 0
15.06.2007, 09:56:17
    #34596577
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
Умаксуман" На данной стадии развития приложения не умеет корректно завершаться и падает в sigmentaion fail." - это как?!
Ну и стиль у вас


Стиль, как стиль. Не пойму, что не понятного.

Умаксуман
Для начала развейте приложение до того, чтобы оно корректно завершалось, а потом ловите баги. А то получается баг на баге, а потом баги ищите.


Так это у меня баг на баге? Понятно, что на баге, но баг ли это?

Я не спрашивал, что мне сначала делать? Я с прашивал что делать с анализом - работает приложение или нет?
...
Рейтинг: 0 / 0
15.06.2007, 09:58:35
    #34596585
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
УмаксуманВ целом подход тоже супер - останавливаем приложение,все виснет, ага, бага в ядре! Гениально!

Если почитать внимательно, то будет понятно: останавливаем приложение - ничего не виснет (6-е предложение 3-го абзаца). Я так понимаю, вы непоняли, ровным счетом, ничего.
...
Рейтинг: 0 / 0
15.06.2007, 15:16:47
    #34598080
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
Тебе нужно сначало сделать так, чтобы приложение завершалось без всяких сегфолтов - это значительно облегчит поиск бага.

--------------
Если враг не сдается - его перегружают
...
Рейтинг: 0 / 0
15.06.2007, 16:21:31
    #34598413
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
УмаксуманТебе нужно сначало сделать так, чтобы приложение завершалось без всяких сегфолтов - это значительно облегчит поиск бага.


Это я обязательно сделаю, но это не задача первостепенной важности.

Ну, а когда она будет завершаться корректно, тогда и баг сам пропадет.

2 all: Вообщем, я так понял, народ не в курсе как понимать данную ситуацию?
...
Рейтинг: 0 / 0
15.06.2007, 16:28:03
    #34598441
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
я вообще-то согласен , что сначала надо бороться с seg fault.
но по теме -ежели виснет ps - попробовать его заменить, скажем, чтением /proc
им посмтреть, что из этого выйдет!
...
Рейтинг: 0 / 0
16.06.2007, 08:01:50
    #34599265
v6y
v6y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
Akh
2 all: Вообщем, я так понял, народ не в курсе как понимать данную ситуацию?

Ситуация несколько нетипичная. Не должно вешать систему (тем более намертво) то что ты описал. Так что очень может быть, что либо ты что-то упустил, либо о чем-то умолчал. Если есть возможность и желание, выложи здесь сырцы проги и скрипта, а также соответствующую строчку из иниттаба.
...
Рейтинг: 0 / 0
16.06.2007, 10:26:13
    #34599302
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
v6y Akh
2 all: Вообщем, я так понял, народ не в курсе как понимать данную ситуацию?

Ситуация несколько нетипичная. Не должно вешать систему (тем более намертво) то что ты описал. Так что очень может быть, что либо ты что-то упустил, либо о чем-то умолчал. Если есть возможность и желание, выложи здесь сырцы проги и скрипта, а также соответствующую строчку из иниттаба.

Да что ты ему объясняешь, это ж очередной непризнанный гений, нам, плебеям, его не понять. Лучше мне объясни, как так можно - у приложения баг при остановке, автор это знает, никак это не пытается исправить и думает, что это баг в ядре? Я почему-то думал, что сначала надо исправлять все очевидные ошибки, а потом браться за неочевидные.
...
Рейтинг: 0 / 0
16.06.2007, 11:12:14
    #34599340
v6y
v6y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
2 Умаксуман
Меня заинтересовал сам факт того что система повисла намертво. Баг, не баг, но такого (если все делать правильно) быть не должно. Тут недавно один из моих молодых бойцов при реализации похожей связки сам себе "fork bombing" устроил. Но там просто все повисло (что собственно вполне понятно) , а здесь виснет, по словам автора, только при обращении к ps (сканировании /proc?).
...
Рейтинг: 0 / 0
16.06.2007, 11:42:49
    #34599373
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
да, то, что пользовательский процесс вешает систему - это однозначно странно. Безотносительно к тому, что баг, несомненно, надо исправлять.
...
Рейтинг: 0 / 0
18.06.2007, 10:04:16
    #34600941
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
v6y Akh
2 all: Вообщем, я так понял, народ не в курсе как понимать данную ситуацию?

Ситуация несколько нетипичная. Не должно вешать систему (тем более намертво) то что ты описал. Так что очень может быть, что либо ты что-то упустил, либо о чем-то умолчал. Если есть возможность и желание, выложи здесь сырцы проги и скрипта, а также соответствующую строчку из иниттаба.

inittab
7:2345:respawn:/prog_dir/proga_file


Скрипт примерно такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#!/bin/bash

SERVER="_proga"
SERVER_DIR="/proga/elf/"
OWN_DIR="/proga/"
LOG_FILE="progalog"

echo "" >>$OWN_DIR$LOG_FILE
echo "`date` proga starting..." >>$OWN_DIR$LOG_FILE
sleep  1 
#Так пока работает
#echo "`date` cronyx stoping..." >>$OWN_DIR$LOG_FILE
#cronyx.stop
sleep  1 
#echo "`date` cronyx starting..." >>$OWN_DIR$LOG_FILE
#cronyx.start
sleep  1 
echo "`date` sconfig starting..." >>$OWN_DIR$LOG_FILE
${OWN_DIR}cfgs/sconfig
sleep  8 
echo "`date` proga starting..." >>$OWN_DIR$LOG_FILE
cd $SERVER_DIR
./$SERVER
cd $OWN_DIR
sleep  1 
echo "`date` proga stoped" >>$OWN_DIR$LOG_FILE

Сырцы проги не помогут, т.к. их в первую очередь много (50 тыс строк). Могу в дополнении сказать, что там сразу используется несколько сокетов езернет, дискрипторы файлов и 31 открытый виртуальны порт реализуемый загруженными драйверами. В дополенении в проге порядка 20-ти потоков, множество мьютексов, шаренная память, и если менее 10-ти труб.

Вроде бы больше нечего умалчать.
...
Рейтинг: 0 / 0
18.06.2007, 10:05:12
    #34600943
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
УмаксуманДа что ты ему объясняешь, это ж очередной непризнанный гений, нам, плебеям, его не понять.

Респект признаным гениям.
...
Рейтинг: 0 / 0
18.06.2007, 10:06:52
    #34600946
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
--null--да, то, что пользовательский процесс вешает систему - это однозначно странно. Безотносительно к тому, что баг, несомненно, надо исправлять.

Что же вы к этому багу прицепились? Есстественно, он будет исправляться в ближайшее время и, есстественно, эта задача имеет высокий приоритет.
...
Рейтинг: 0 / 0
18.06.2007, 10:09:09
    #34600953
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
v6yНо там просто все повисло (что собственно вполне понятно) , а здесь виснет, по словам автора, только при обращении к ps (сканировании /proc?).

Причем довольно стопроцентно.
...
Рейтинг: 0 / 0
18.06.2007, 10:09:48
    #34600956
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
Ну, да, еще одно уточнение - система ASP v10.
...
Рейтинг: 0 / 0
18.06.2007, 13:33:04
    #34601737
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
v6y2 Умаксуман
Меня заинтересовал сам факт того что система повисла намертво. Баг, не баг, но такого (если все делать правильно) быть не должно. Тут недавно один из моих молодых бойцов при реализации похожей связки сам себе "fork bombing" устроил. Но там просто все повисло (что собственно вполне понятно) , а здесь виснет, по словам автора, только при обращении к ps (сканировании /proc?).

Это может быть и замедленный "fork bombing" - это когда количество defunct -ов переваливает все разумные пределы .
А ps просто не в состоянии их переварить.
...
Рейтинг: 0 / 0
18.06.2007, 14:02:06
    #34601873
v6y
v6y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
Akh v6yНо там просто все повисло (что собственно вполне понятно) , а здесь виснет, по словам автора, только при обращении к ps (сканировании /proc?).

Причем довольно стопроцентно.

Интересно... ps просто сканирует папки из proc названия которых состоят из цифр и мне как то трудно представить как такое сканирование само по себе может намертво повесить систему.


Сырцы проги не помогут, т.к. их в первую очередь много (50 тыс строк). Могу в дополнении сказать, что там сразу используется несколько сокетов езернет, дискрипторы файлов и 31 открытый виртуальны порт реализуемый загруженными драйверами. В дополенении в проге порядка 20-ти потоков, множество мьютексов, шаренная память, и если менее 10-ти труб.

Напугал однако :). Особенно 31 открытым портом, реализуемым загруженными драйверами. Но без сырцов программы это будет гадание на кофейной гуще. Может сможешь создать какой-нибудь воспроизводимый пример? Не всю прогу, а нечто сильно покоцанное на ее основе, но ведущее себя соответствующим странным образом?


2 onstat-
Да скорее всего что то типа того. В том плане, что что-то неявным образом грузит систему по самое не могу.
...
Рейтинг: 0 / 0
18.06.2007, 14:31:10
    #34601997
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
v6y
Напугал однако :). Особенно 31 открытым портом, реализуемым загруженными драйверами.


Да цель была не напугать, а более-менее дать представление о работе проги с системой.

v6y
Но без сырцов программы это будет гадание на кофейной гуще. Может сможешь создать какой-нибудь воспроизводимый пример? Не всю прогу, а нечто сильно покоцанное на ее основе, но ведущее себя соответствующим странным образом?


Нет. Воспроизводить и искать в чем дело довольно трудоемкая задача. Сейчас обошел это зависание. В скором времени буду искать в чем сигментейшеон фэйл. Возможно причина будет именно в нем, - тогда и можно будет провести анализ - по этой ли причине зависание.
...
Рейтинг: 0 / 0
18.06.2007, 15:08:17
    #34602151
v6y
v6y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
Akh v6y
Напугал однако :). Особенно 31 открытым портом, реализуемым загруженными драйверами.


Да цель была не напугать, а более-менее дать представление о работе проги с системой.

v6y
Но без сырцов программы это будет гадание на кофейной гуще. Может сможешь создать какой-нибудь воспроизводимый пример? Не всю прогу, а нечто сильно покоцанное на ее основе, но ведущее себя соответствующим странным образом?


Нет. Воспроизводить и искать в чем дело довольно трудоемкая задача. Сейчас обошел это зависание. В скором времени буду искать в чем сигментейшеон фэйл. Возможно причина будет именно в нем, - тогда и можно будет провести анализ - по этой ли причине зависание.

Попробуй все таки на всякий ограничить максимальное число процессов для одного пользователя (или через /etc/security/limits.conf, или через bash-овскую команду ulimit -u в скрипте, или програмно через вызов setrlimit). Если поможет, то значит все таки fork bombing.
...
Рейтинг: 0 / 0
18.06.2007, 15:11:03
    #34602165
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
Система может в таком случае виснут из-за кривых драйверов или их неправильного использования. Тем более людям, которые вместо исправления своих багов лезут их искать в ядре, я бы мутексы и многопточные приложения не доверял бы.
...
Рейтинг: 0 / 0
18.06.2007, 15:47:34
    #34602327
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
segmentation fail, inittab и ps x
v6yПопробуй все таки на всякий ограничить максимальное число процессов для одного пользователя (или через /etc/security/limits.conf, или через bash-овскую команду ulimit -u в скрипте, или програмно через вызов setrlimit). Если поможет, то значит все таки fork bombing.

У меня сервер от root-a запускается (нет смены на пользователя).

У меня было предположение, что это какой-нибудь извесный факт, а разбираться методом тыка нет особого желания (т.к. проблема обойдена, а вскоре изменятся условия - программа будет завершаться без падения, там и посмотрим).
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / segmentation fail, inittab и ps x / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]