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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка segmentation fault либо хоть Stack Trace 
:(
    Опции темы
MAKCim
Дата 3.3.2008, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(xvr @  3.3.2008,  12:03 Найти цитируемый пост)
Корректно завершить работу приложения, сохранить стек для посмертного разбора полетов в gdb. - Тут setjmp/longjmp не нужны, нужен abort

abort() гарантирует лишь дамп, закрытие и сброс всех файловых дескрипторов
логика работы приложения может подразумевать некоторые дополнительные действия для корректного освобождения ресурсов, которые через вызов abort() невозможно осуществить
если использовать longjmp(), то мы потеряем часть стека из-за его раскрутки (изменение [ER]SP)
вот тут и нужно использовать сигнальный фрейм, из которого можно получить адрес вершины стека перед выполнением инструкции, которая привела к SIGSEGV
Цитата(xvr @  3.3.2008,  12:03 Найти цитируемый пост)
Изолировать сбойный участок приложения (plugin), сохранить стек сбоя для анализа в gdb, отключить участок кода, продолжить исполнение. setjmp/longjmp + функция для сброса core файла (если она есть smile )

забавно
а зачем тогда этот участок кода, если программа и без него дальше якобы будет работать?  smile 
Цитата(xvr @  3.3.2008,  12:03 Найти цитируемый пост)
Что такое gdb? - man gdb на ночь до полного просветления

который год программирую и не знал о GDB
спасибо за совет  smile  smile 
могу даже + поставить, хочешь?



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

PM MAIL   Вверх
xvr
Дата 3.3.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(MAKCim @ 3.3.2008,  13:57)
Цитата(xvr @  3.3.2008,  12:03 Найти цитируемый пост)
Корректно завершить работу приложения, сохранить стек для посмертного разбора полетов в gdb. - Тут setjmp/longjmp не нужны, нужен abort

abort() гарантирует лишь дамп, закрытие и сброс всех файловых дескрипторов
логика работы приложения может подразумевать некоторые дополнительные действия для корректного освобождения ресурсов, которые через вызов abort() невозможно осуществить

Разумеется. Не имеет никакого смысла перехватывать SEGV чтобы ТОЛЬКО сделать abort - core файл и так получится, без всяких перехватов smile

Цитата

если использовать longjmp(), то мы потеряем часть стека из-за его раскрутки (изменение [ER]SP)
вот тут и нужно использовать сигнальный фрейм, из которого можно получить адрес вершины стека перед выполнением инструкции, которая привела к SIGSEGV
Для данного сценария использования longjmp не нужет.

Цитата

Цитата(xvr @  3.3.2008,  12:03 Найти цитируемый пост)
Изолировать сбойный участок приложения (plugin), сохранить стек сбоя для анализа в gdb, отключить участок кода, продолжить исполнение. setjmp/longjmp + функция для сброса core файла (если она есть smile )

забавно
а зачем тогда этот участок кода, если программа и без него дальше якобы будет работать?  smile 
Plugin. Может мне не нравится, что кривой плагин к моей программе помрет, захватив с собой и программу  smile Его SEGV - это его личные дела, мне чужого не надо  smile 

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


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



xvr
Цитата(xvr @  3.3.2008,  19:01 Найти цитируемый пост)
Plugin. Может мне не нравится, что кривой плагин к моей программе помрет, захватив с собой и программу  smile Его SEGV - это его личные дела, мне чужого не надо

скрипты? ipc? smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 3.3.2008, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(JackYF @  3.3.2008,  23:15 Найти цитируемый пост)
ipc?

где ты видел плагин в виде исполняемого файла, да еще и с поддержкой IPC для удобства работы?  smile 


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

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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Цитата(MAKCim @ 3.3.2008,  23:33)
Цитата(JackYF @  3.3.2008,  23:15 Найти цитируемый пост)
ipc?

где ты видел плагин в виде исполняемого файла, да еще и с поддержкой IPC для удобства работы?  smile

На счет IPC не уверен, а вот плагины в виде исполняемых файлов существуют. Например, у valgrind.
PM   Вверх
MAKCim
Дата 4.3.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(bsa @  4.3.2008,  11:52 Найти цитируемый пост)
На счет IPC не уверен, а вот плагины в виде исполняемых файлов существуют. Например, у valgrind. 

как плагин взаимодействует с основной программой?


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

PM MAIL   Вверх
JackYF
Дата 4.3.2008, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(MAKCim @  3.3.2008,  22:33 Найти цитируемый пост)
где ты видел плагин в виде исполняемого файла, да еще и с поддержкой IPC для удобства работы?

flashplugin у firefox. smile

Добавлено через 25 секунд
ipc не видел, это было имхное предположение smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 4.3.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(JackYF @  4.3.2008,  16:18 Найти цитируемый пост)
flashplugin у firefox.

у меня он называется libflashplayer.so  smile 
или у меня не тот плагин?  smile 


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

PM MAIL   Вверх
Anton Vatchenko
Дата 5.3.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: -1



Сколько я смотрел похожие темы - почему-то все считают, что "автор" не умеет писать код. Иногда "автор" пишет 50-потоковое приложение, владеющее общими ресурсами, где java работала более корректно - можно было любым try/catch просто спрятать ошибку, и при этом максимум потерять поток, а не все приложение вместе с его данными.


--------------------
user posted image
PM MAIL   Вверх
blinded
Дата 5.3.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я видел plug-in'ы которые реализуютс в виде разделяемой библиотеки, и взаимодействуют с основной программой через IPC. называется Oracle Data Catridge's. Сам plug-in работает в отдельном процессе, чтобы сервер БД не завалить
PM MAIL   Вверх
JackYF
Дата 5.3.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(blinded @  5.3.2008,  13:19 Найти цитируемый пост)
Я видел plug-in'ы которые реализуютс в виде разделяемой библиотеки, и взаимодействуют с основной программой через IPC. называется Oracle Data Catridge's. Сам plug-in работает в отдельном процессе, чтобы сервер БД не завалить 

О, значит, есть такие smile Вот это я и имел в виду, хотя конкретных примеров не знал smile

Это сообщение отредактировал(а) JackYF - 5.3.2008, 18:04


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 5.3.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(JackYF @  5.3.2008,  18:04 Найти цитируемый пост)
О, значит, есть такие smile Вот это я и имел в виду, хотя конкретных примеров не знал

ключевые слова - "разделяемая" и "библиотека"  smile

Добавлено @ 18:16
Anton Vatchenko
оставайся тогда на java  smile 
ибо SIGSEGV - это действительно обычно кривые руки
без обид

Это сообщение отредактировал(а) MAKCim - 5.3.2008, 18:17


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

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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(Anton Vatchenko @ 5.3.2008,  12:53)
Сколько я смотрел похожие темы - почему-то все считают, что "автор" не умеет писать код. 

Отнюдь.  Обычно создается впечатление, что 'автор' не умеет пользоваться дебагером (а то и вовсе не знает о наличии такого полезного тулза). Ибо если бы он мог, то такие вопросы не задавал бы - ибо то, что он пытается получить, это именно то, для чего были сделанны дебагеры.
Цитата

Иногда "автор" пишет 50-потоковое приложение, владеющее общими ресурсами, где java работала более корректно - можно было любым try/catch просто спрятать ошибку, 
В смысле 'затоптать'?  smile 
Цитата

и при этом максимум потерять поток, а не все приложение вместе с его данными.
Это можно сделать и на любом другом языке, на Jave конечно это проще.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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