Прежде всего извините за вызов malloc внутри обработчика сигнала :). Я тоже понимаю, что мы не должны делать сколько-нибудь трудоемкую задачу/этот вид неприятных вещей внутри обработчика сигнала.malloc in linux обработчик сигнала вызывает тупик
Но мне любопытно узнать причину, почему она разбилась?
#0 0x00006e3ff2b60dce in _lll_lock_wait_private() from /lib64/libc.so.6
#1 0x00006e3ff2aec138 in _L_lock_9164() from /lib64/libc.so.6
#2 0x00006e3ff2ae9a32 in malloc() from /lib64/libc.so.6
#3 0x00006e3ff1f691ad in ??() from ..
Я получил аналогичное ядро, зарегистрированное в https://access.redhat.com/solutions/48701.
Операционная система: RHEL
Я не верю, что 'malloc()' считается повторным, и поэтому небезопасно вызывать обработчик сигнала. См. 'Man 7 signal' в разделе« Безопасные функции сигнала Async », чтобы узнать, что разрешено. Вообще говоря, если это не в этом списке, вероятно, небезопасно звонить из обработчика сигнала. На самом деле, это даже рекомендация в документе, который вы связали. – twalberg
связанных: https://stackoverflow.com/questions/3366307/why-is-malloc-not-async-signal-safe –