В настоящее время я отлаживаю segfault в одном из наших приложений на c ++, и мне трудно, так как при возникновении segfault не создаются файлы ядра.
После некоторого чтения и проверки ulimit и т. Д. Я могу воспроизвести случай, когда файлы ядра не генерируются. Кажется, как-то связано с темами. Для этого я изменил наше программное обеспечение для искусственного генерирования SEGV:
Теперь появляется следующий шаблон
- SEGV в главном потоке -> генерируется основной файл
- SEGV в не основной поток -> no генерируется основной файл
Затем, чтобы не изменять саму программу, я также пытался сделать то же самое с отправкой сигналов.
- Отправка файла ядра kill -s SIGSEGV - -> генерируется
Затем я выполняю поиск в файле und / proc / / task для неосновной и получил идентификатор
- Отправка "kill -s SIGSEGV " -> нет генерируется основной файл
Знаете ли вы о какой-нить специфицирует c свойства, которые бы объясняли такое поведение?
Я также пробовал один и тот же код под разными ОС, и это происходит только в нашей производственной среде (redhat6), а не под Ubuntu. Я все еще пытаюсь выяснить, может ли это быть связано со сборками Debug / Non-Debug.
Тем не менее поведение кажется настолько странным, что оно должно быть из-за некоторой тонкости. Мне также интересно, если бы я хотел создать такое поведение специально, я бы даже не знал, что изменить, чтобы добиться этого.
Любая помощь приветствуется.
С наилучшими пожеланиями, Матиас