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

Поиск:

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


Опытный
**


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

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



В джаве было удобно обрабатывать любую ошибку с помощью экзепшнов... В си под линухом я так понял нельзя... Можно либо как-то обработать этот SegFault, либо перед ним (я знаю где он вываливается) вызвать Stack Trace вызывающих функций?


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


Эксперт
****


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

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



Цитата(Anton Vatchenko @ 29.2.2008,  13:40)
В джаве было удобно обрабатывать любую ошибку с помощью экзепшнов... В си под линухом я так понял нельзя... Можно либо как-то обработать этот SegFault, 

Можно: man signal & sigaction

Цитата

либо перед ним (я знаю где он вываливается) вызвать Stack Trace вызывающих функций?
Только в gdb

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


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


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

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



Цитата(xvr @  29.2.2008,  13:57 Найти цитируемый пост)
Только в gdb

нет, не только
GDB - это такая же программа, как и другие
Цитата(xvr @  29.2.2008,  13:57 Найти цитируемый пост)
Можно: man signal & sigaction

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



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

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


Эксперт
****


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

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



Цитата(MAKCim @ 29.2.2008,  16:44)
Цитата(xvr @  29.2.2008,  13:57 Найти цитируемый пост)
Только в gdb

нет, не только
GDB - это такая же программа, как и другие

Для того, что бы получить Stack Trace нужен порядочный кусок gdb. Я не спорю, что этот кусок можно написать самому, или выдрать из gdb, но получить его (Stack Trace) одним вызовом чего-нибудь из libc не получится.

Цитата

Цитата(xvr @  29.2.2008,  13:57 Найти цитируемый пост)
Можно: man signal & sigaction

будут проблемы с возобновлением дальнейшей работы программы
обработка SIGSEGV нужна разве что для корректного освобождения ресурсов
Я не очень понимаю, какая может быть 'дальнейшая работа' после SEGV  smile Если у автора темы есть представление о том, что он будет делать после SEGV, то setjmp/longjmp ему помогут  smile

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


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


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

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



Цитата(xvr @  29.2.2008,  20:19 Найти цитируемый пост)
Если у автора темы есть представление о том, что он будет делать после SEGV, то setjmp/longjmp ему помогут

не помогут, т. к при их использовании потеряем стек



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

PM MAIL   Вверх
prof_GCC
Дата 1.3.2008, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А зачем автору отлавливать ошибку сегментирования, это глупость, все остальные сигналы прекрасно обрабатываются, а если у тебя в программе возникает такая ошибка, то совет один gdb, и внимательность при написании кода smile

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


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


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

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



Цитата(prof_GCC @  1.3.2008,  09:48 Найти цитируемый пост)
А зачем автору отлавливать ошибку сегментирования, это глупость

для освобождения занятых ресурсов и логирования

Это сообщение отредактировал(а) MAKCim - 1.3.2008, 10:03


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

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


Эксперт
****


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

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



Цитата(MAKCim @ 1.3.2008,  00:27)
Цитата(xvr @  29.2.2008,  20:19 Найти цитируемый пост)
Если у автора темы есть представление о том, что он будет делать после SEGV, то setjmp/longjmp ему помогут

не помогут, т. к при их использовании потеряем стек

Мы его уже практически потеряли при SEGV - продолжить исполнение на этом стеке (без плясок с бубном) уже нельзя  smile
Единственный способ продолжить (IMHO) - разобраться с инструкцией, вызвавшей SEGV, откорректировать ей регистры/память и повторить, или выполнить самому ее семантику без SEGV и продолжить исполнение со следующей инструкции. И почему то мне кажется, что если автор темы в состоянии это сделать, он бы таких вопросов не задавал  smile 
И еще мне кажется, что у него банальные проблемы с отладкой  smile 
PM MAIL   Вверх
prof_GCC
Дата 1.3.2008, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



отладка отладка и еще раз отладка, ошибку сегментирования ловить не нужно если она возникает, то как минимум надо устранить причину, а не пытаться ее обработать, а для этого есть gdb
PM MAIL   Вверх
MAKCim
Дата 1.3.2008, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



xvr
я согласен, но setjmp() и longjmp() тут не помогут
если получил управление наш обработчик SIGSEGV, то в сигнальном фрейме были сохранены значения всех регистров, которые они имели до SIGSEGV
так что нужно использовать этот фрейм, а не longjmp()
Цитата(xvr @  1.3.2008,  10:09 Найти цитируемый пост)
при SEGV - продолжить исполнение на этом стеке (без плясок с бубном) уже нельзя

можно
если управление получил наш обработчик, то со стеком все в порядке

Добавлено через 4 минуты и 33 секунды
Цитата(prof_GCC @  1.3.2008,  10:36 Найти цитируемый пост)
ошибку сегментирования ловить не нужно если она возникает, то как минимум надо устранить причину

нужно
в сложной программе все предусмотреть нельзя, также нельзя доказать ее безошибочность
SIGSEGV может проявиться не сразу, а до этого программа может работать абсолютно правильно
может открывать соединения с БД и т. д
при ошибке необходимо как минимум корректно освободить все ресурсы и залогировать все, что можно
дальше, конечно, отладка и поиск ошибки (по дампу и логам)


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

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


Эксперт
****


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

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



Цитата(MAKCim @ 1.3.2008,  11:23)
xvr
я согласен, но setjmp() и longjmp() тут не помогут
если получил управление наш обработчик SIGSEGV, то в сигнальном фрейме были сохранены значения всех регистров, которые они имели до SIGSEGV
так что нужно использовать этот фрейм, а не longjmp()

При вызове обработчика SEGV будет сформирован специальный фрейм на верхушке пользовательского стека. Если теперь вызвать из обработчика SEGV longjmp с фреймом ВНУТРИ текущего пользовательского стека, то весь стек (включая сформированный системой для обработчика SEGV) будет свернут и исполнение продолжено после setjmp. 

Цитата

Цитата(xvr @  1.3.2008,  10:09 Найти цитируемый пост)
при SEGV - продолжить исполнение на этом стеке (без плясок с бубном) уже нельзя

можно
если управление получил наш обработчик, то со стеком все в порядке
А куда он будет возвращать управление? Там по прежнему команда, которая вызвала SEGV, и она его снова вызовет при возврате  smile Даже если откорректировать ip (а это уже и есть 'пляски с бубном'), что бы пропустить эту команду, то как минимум та часть семантики, которая была связанна с неудавшемся обращением в память обработанна не будет. Если мы предполагаем, что мы ничего не знаем о команде, вызвавшей SEGV, то поведение программы после этого становится явно неправильным  smile 

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


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


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

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



Цитата(xvr @  2.3.2008,  11:12 Найти цитируемый пост)
При вызове обработчика SEGV будет сформирован специальный фрейм на верхушке пользовательского стека. Если теперь вызвать из обработчика SEGV longjmp с фреймом ВНУТРИ текущего пользовательского стека, то весь стек (включая сформированный системой для обработчика SEGV) будет свернут и исполнение продолжено после setjmp. 

setjmp() сохраняет текущий контекст (в момент вызова)
появление же SIGSEGV асинхронно по отношению к основному потоку выполнения
после setjmp(), но перед SIGSEGV может идти активная работа со стеком
после выполнения longjmp() мы эту часть стека просто потеряем
Цитата(xvr @  2.3.2008,  11:12 Найти цитируемый пост)
А куда он будет возвращать управление? Там по прежнему команда, которая вызвала SEGV, и она его снова вызовет при возврате

в этом смысле да, адрес возврата будет либо адресом инструкции, которая вызвала исключение, либо адрес функции окружения (если задан флаг SA_RESTORER)
я же имел в виду, что со стеком как с областью адресного пространства будет все в порядке
Цитата(xvr @  2.3.2008,  11:12 Найти цитируемый пост)
Если мы предполагаем, что мы ничего не знаем о команде, вызвавшей SEGV, то поведение программы после этого становится явно неправильным

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


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

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


Эксперт
****


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

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



Цитата(MAKCim @ 2.3.2008,  11:38)
Цитата(xvr @  2.3.2008,  11:12 Найти цитируемый пост)
При вызове обработчика SEGV будет сформирован специальный фрейм на верхушке пользовательского стека. Если теперь вызвать из обработчика SEGV longjmp с фреймом ВНУТРИ текущего пользовательского стека, то весь стек (включая сформированный системой для обработчика SEGV) будет свернут и исполнение продолжено после setjmp. 

setjmp() сохраняет текущий контекст (в момент вызова)
появление же SIGSEGV асинхронно по отношению к основному потоку выполнения
после setjmp(), но перед SIGSEGV может идти активная работа со стеком
после выполнения longjmp() мы эту часть стека просто потеряем

Разумеется setjmp/longjmp не панацея и требуют определенного протокола при работе с ними для отлова SEGV.
Например, у нас есть plugin, выполненный в виде .so, и мы хотим, что бы падение в процедурах этого plugin'а не приводило к падениям нашего приложения. В таком случае мы можем устанавливать обработчик SEGV и вызывать setjmp перед вызовами процедур из plugin'а, и сбрасывать обработчик после вызовов. В случае получения SEGV ВНУТРИ процедуры plugin'а, мы можем сделать longjmp, после чего матерно обругаться и выгрузить plugin.
Разумеется, одного вызова setjmp в начале программы, а потом переход по longjmp в SEGV не достаточно  smile 
Цитата

Цитата(xvr @  2.3.2008,  11:12 Найти цитируемый пост)
А куда он будет возвращать управление? Там по прежнему команда, которая вызвала SEGV, и она его снова вызовет при возврате

в этом смысле да, адрес возврата будет либо адресом инструкции, которая вызвала исключение, либо адрес функции окружения (если задан флаг SA_RESTORER)
Т.е. стек будет, но сделать с ним ничего нельзя - только смотреть  smile 
Цитата

я же имел в виду, что со стеком как с областью адресного пространства будет все в порядке
Если интересует стек 'как область адресного пространства', то можно сделать abort и потом (post-mortem) изучать полученный core до посинения  smile Я имел в виду 'стек вызовов', т.е. его 'живую' копию, на которой можно исполняться.

Цитата

Цитата(xvr @  2.3.2008,  11:12 Найти цитируемый пост)
Если мы предполагаем, что мы ничего не знаем о команде, вызвавшей SEGV, то поведение программы после этого становится явно неправильным

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

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


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


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

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



Цитата(xvr @  2.3.2008,  19:33 Найти цитируемый пост)
Разумеется setjmp/longjmp не панацея и требуют определенного протокола при работе с ними для отлова SEGV.

зачем велосипеды изобретать?
вводить какие-то протоколы, если нужную информацию можно просто получить из сигнального фрейма
Цитата(xvr @  2.3.2008,  19:33 Найти цитируемый пост)
Т.е. стек будет, но сделать с ним ничего нельзя - только смотреть

в большинстве случаев да (если не надо анализировать соответствующую инструкцию)

вообще, что-то не понятно, о чем мы спорим
я утверждаю, что setjmp()/longjmp() не лучшее решение, если нужно нечто бОльшее, нежели обычное завершение процесса, при получении SIGSEGV
про abort(), пожалуй, соглашусь


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

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


Эксперт
****


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

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



Цитата(MAKCim @ 3.3.2008,  10:34)
Цитата(xvr @  2.3.2008,  19:33 Найти цитируемый пост)
Разумеется setjmp/longjmp не панацея и требуют определенного протокола при работе с ними для отлова SEGV.

зачем велосипеды изобретать?
вводить какие-то протоколы, если нужную информацию можно просто получить из сигнального фрейма

Хочется не просто получить информацию, а изолировать неработоспособный кусок кода и продолжить исполнение дальше.

Цитата

вообще, что-то не понятно, о чем мы спорим
я утверждаю, что setjmp()/longjmp() не лучшее решение, если нужно нечто бОльшее, нежели обычное завершение процесса, при получении SIGSEGV
Собственно об этом и спорим smile Вопрос о том, что такое 'нечто бОльшее', тут возможны варианты:
  •  Корректно завершить работу приложения, сохранить стек для посмертного разбора полетов в gdb. - Тут setjmp/longjmp не нужны, нужен abort
  •  Изолировать сбойный участок приложения (plugin), сохранить стек сбоя для анализа в gdb, отключить участок кода, продолжить исполнение. setjmp/longjmp + функция для сброса core файла (если она есть smile ) 
  •  Что такое gdb? - man gdb на ночь до полного просветления  smile

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

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

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


 




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


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

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