2013-05-07 2 views
0

Моя программа периодически падает и сбрасывает ядро. Но когда я пытаюсь получить стек из основного файла я получаю следующий результат:Пустой файл ядра на Solaris

mdb: core file data for mapping at 100000000 not saved: Interrupted system call 
mdb: core file data for mapping at 100250000 not saved: Interrupted system call 
mdb: core file data for mapping at 10035a000 not saved: Interrupted system call 
mdb: core file data for mapping at 100360000 not saved: Interrupted system call 
mdb: core file data for mapping at 100440000 not saved: Interrupted system call 
mdb: core file data for mapping at 100446000 not saved: Interrupted system call 
mdb: core file data for mapping at 100450000 not saved: Interrupted system call 
mdb: core file data for mapping at 100800000 not saved: Interrupted system call 

Я думал, что были какие-то проблемы с MDB, но другие приложения сохраняет файл ядра правильно, так что может быть причиной этой проблемы ?

Спасибо заранее.

+0

Что вы 'ulimit -c' –

+0

это - неограниченное –

ответ

2

mdb достоверно сообщает, что что-то не так с ядром. Когда сопоставление не удаляется, Solaris устанавливает флаг (PF_SUNW_FAILURE), указывающий, что он не удалось, и вместо этого сохраняет errno. Это «Прерванный системный вызов», который вы видите, errno указывает, почему каждое сопоставление не сбрасывалось.

Наиболее распространенный способ получить здесь - это сигнализировать процесс, когда ядро ​​сбрасывается, прерывая сброс. Я не думаю, что Oracle Solaris дает окончательный способ убедиться, что это произошло, или какой-либо другой ключ относительно того, почему сопоставление не удалось сбрасывать. Если ваш процесс большой и/или работает под любой системой, чтобы автоматически перезапустить или контролировать его (я думаю, но не уверен, что даже SMF убьет процесс, занимающий достаточно много времени, чтобы свалить, в результате чего дамп прекратится, например,), я бы заподозрил, что это сигнализируют, когда оно демпинговое ядро, а не что-то еще не так.

Если вы уверены, что вы не сигнализируется во время сброса ядра, что-то происходит, что приводит к записи в файловую систему, на которой ядро ​​выбрасывали на провал EINTR, и это, вероятно, не будет легко чтобы определить, что.

Смежные вопросы