Почему не может malloc использоваться в обработчиках сигналов? Что может "произойти неправильно"?
Обработчик сигнала может быть вызван в любое время, в том числе во время выполнения другого вызова malloc
. Если это произойдет, произойдет одно из двух:
malloc
не сможет получить блокировку кучи. malloc
действительно получает блокировку (или не думает, что она ему нужна), а затем продолжает преобразовывать кучу в несогласованную, что приводит к последующему сбою.