freebsd signal 10
это если нет оснований подозревать глюки железа
а под valgrind-ом его гонял?
пока нет, так как очень сложно отловить момент, когда возникает эта херь. Он может неделями работать и все ок.
у меня демон работает с шаренной памятью. Некорректная работа с ней может вызвать такой сигнал?
вон пишут например такое может выдать SIGBUS:
unsigned char *x = "text";
int main{
x[2] = 's';
}
ага, видел этот пример. Но меня больше всего смущает то, что под линуксом он уже несколько лет работал, и никаких проблем не было.
например обычный malloc и free по-разному ведёт
может быть, на одной системе можно получить доступ к блоку, который недавно был особождён через free, на другой нет
в первом случае free просто добавляет блок в список свободных, а во втором например размапливает страницу, где он располагался
ну и еще меня смущает, что простая перекомпиляция избавляет от этой херни. То есть на выходе получается ровно такой же бинарник (судя по размеру но тем не менее это помогает)
попробуй вместо перекомпиляции например такое:
cp ./program ./program.new
mv ./program-new ./program
если такое поможет, то я бы подумал на баг в ядре или в железе
а хотя нет
если у тебя system V shared memory - то какой ты указываешь ключ?
попробуй вместо перекомпиляции например такое:хм, надо попробовать
cp ./program ./program.new
mv ./program-new ./program
если у тебя system V shared memory - то какой ты указываешь ключ?я с шаренной памятью общаюсь через файл
То есть на выходе получается ровно такой же бинарник (судя по размеру)А хэшу?
хз, не смотрел
cp ./program ./program.newв общем это помогло, спасибо) Перенесу значит на линукс этот демон, раз такие дела
mv ./program-new ./program
если такое поможет, то я бы подумал на баг в ядре или в железе
не слишком ли быстро вы свалили всё на железо?..
что на линуксе десять лет работало а тут падает - не убеждает ни разу...
всё-таки под валгриндом прогнать не то чтобы сильно сложно, а вероятность отловить малоприметный баг при его наличии - достаточно велика
всё-таки под валгриндом прогнать не то чтобы сильно сложноя тут для себя открыл, что валгринд официально под фрибсд не поддерживается. Есть какая-то поделка, но написано, что ее работа непредсказуема. Или все равно попробовать эту штуку заинсталлить?
под фряху его не использовал, хотя слышал есть порты
а, это можно
Если вдруг кому интересно, то по итогам пидарасом оказался все-таки я. Нашел херню, приводящую с неопределенному поведению. То, что это этот демон несколько лет не падал, было лишь везением. Ему ни разу не приходило "плохих" данных, которые бы вызвали херню. А теперь вот пришли
очень сложно отловить момент, когда возникает эта херьКогда приходит SIGBUS, core.dump файл создаётся? Если да, то из него можно много чего узнать о причинах проблемы.
cp ./program ./program.newинтересно вчем фишка тут и как это работает?
mv ./program-new ./program
может какой-нибудь кэш сохраняется между запусками из-за бага (или даже не баг, а фича - во всяких posix и sus разные штуки есть неочевидные)
Ну расскажи же может быть где налажал, а?
Ставлю на то, что вылез за границу заммапленной области памяти.
Ставлю на то, что вылез за границу заммапленной области памяти.ну типа того. У меня там есть memcpy с макс длинной 256, а тут внезапно стали приходить большие строки. Ну и проблема была в том, что я копирую строку через memcpy, а длину этого куска запоминаю как size от string
может какой-нибудь кэш сохраняется между запусками из-за бага (или даже не баг, а фича - во всяких posix и sus разные штуки есть неочевидные)
вы сказали так как будто это универсальное решение для некоторого рода проблем
вы это где то прочитали или случайно попробовали?
и если прочитали то где?
а если брать более широкий класс проблем, то есть довольно универсальный метод - бинарный поиск (метод деления пополам)
согласно этому методу, я нашёл среднее между перезапуском и перекомпиляцией
и наконец прочитав во второй раз понял в чем суть сообщения
Оставить комментарий
iravik
Есть у меня демон, написанный на сях, который работает под центосом довольно давно. Когда я запустил его на фрибсд (предварительно скомпилив под фрю офк то он тоже поначалу работал, но в один момент он начал получать огромный поток signal 10. Гугление к сожалению мне не помогло, я толком не понял, кто может слать такой сигнал под фрей.Если демон перезапустить, то он продолжает получать поток сигналов. Если же его перекомпилить и запустить, то он перестает получать этот сигнал.
Собственно у меня вопрос: что может означать этот сигнал и кто его может слать?