[c++] корки

pitrik2

сначала мы научились их ловить
в обработчике: объекты в которых случилась корка становятся невалидными (типа isActive терь будет возвращать false)
плюс в лог выводим stack trace (сволочь солярка stack trace выводит без c++filt, о чем есть давняя открытая бага в их багзилле)
клёва что приложение больше не падает
но плохо что нет корки, в которой могла бы быть интересная инфа
дык вот терь мы придумали решение
в обработчике делаем fork, мы продолжаем работать, а ребёнка валим в корку
:)
вот только возникла незадача: fork только один поток реплицирует, а хотелось бы в корке видеть стеки и других потоков
P.S.
мы терь же переезжаем с солярки на линукс
потом когда попробую и если вдруг в линуксе свои особенности, то проапдейчу пост
один минус линукса уже налицо: нет возможности изменить имя корки
ладно что не наглядно, имя бинарника придется брать с корки, а время корки придется брать с ls
но ведь самое ужасное что нельзя иметь несколько корок одновременно, потому что они друг друга перезапишут
:(

Anturag

один минус линукса уже налицо: нет возможности изменить имя корки

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

core_pattern is used to specify a core dumpfile pattern name.
. max length 128 characters; default value is "core"
. core_pattern is used as a pattern template for the output filename;
certain string patterns (beginning with '%') are substituted with
their actual values.
. backward compatibility with core_uses_pid:
If core_pattern does not include "%p" (default does not)
and core_uses_pid is set, then .PID will be appended to
the filename.
. corename format specifiers:
%<NUL> '%' is dropped
%% output one '%'
%p pid
%u uid
%g gid
%s signal number
%t UNIX time of dump
%h hostname
%e executable filename
%<OTHER> both are dropped
. If the first character of the pattern is a '|', the kernel will treat
the rest of the pattern as a command to run. The core dump will be
written to the standard input of that program instead of to a file.

pitrik2

Да линукс вообще полное дерьмо, что уж тут недоговаривать.
балин
ну чо вы такие непонятные
нету у меня рута
и даже если бы был это неудобно
параметр один на всех
в текущеё папке зачастую нет места
потому универсально класть корки в /tmp
имя бинарника у нас одинаковое, в результе в /tmp будет куча корок от разных людей

pitrik2

Да линукс вообще полное дерьмо
зачем так жостко?
у нас причина переезда это сеть
там она адски быстро работает

Anturag

и даже если бы был это неудобно
параметр один на всех
в текущеё папке зачастую нет места
потому универсально класть корки в /tmp
имя бинарника у нас одинаковое, в результе в /tmp будет куча корок от разных людей

. If the first character of the pattern is a '|', the kernel will treat
the rest of the pattern as a command to run. The core dump will be
written to the standard input of that program instead of to a file.
Так понятнее? Или продолжить разжёвывать, что с этим можно делать?

Sergei2008

. If the first character of the pattern is a '|', the kernel will treat
the rest of the pattern as a command to run. The core dump will be
written to the standard input of that program instead of to a file.
стройная система костылей и подпорок (c) :ooo:

Anturag

Да линукс вообще полное дерьмо
зачем так жостко?

Это троллинг, игнорируй.

pitrik2

Так понятнее? Или продолжить разжёвывать, что с этим можно делать?
о
дык может уже есть готовый скрипт? :)
который возьмет из текущего env переменную с паттерном и сохранит туда корку?
ну тойсть как в соляре чтобы получилось :)
я могу и сам написать, просто может есть готовый...

sergeikozyr

а время корки придется брать с ls
man stat
ЗЫ вспомнилось, как чувак в линупсе время работы процесса брал из выхлопа ps

tokuchu

в обработчике делаем fork, нас валим в корку а процесс-ребенок продолжает работать
А почему родителя валите, а не ребёнка? Так pid изменится и ppid после смерти родителя 1 станет (хотя если у вас демон, то наверное уже).

pitrik2

А почему родителя валите, а не ребёнка? Так pid изменится и ppid после смерти родителя 1 станет (хотя если у вас демон, то наверное уже).
сорри
я чушь написал
естессно валим ребенка
причины: сохранение pid и т.к. fork только один поток реплицирует
проапдейтил изначальный пост
Оставить комментарий
Имя или ник:
Комментарий: