как проверить, держит ли malloc блокировку - PullRequest
0 голосов
/ 08 мая 2018

Я столкнулся с проблемой в моем коде, которая выглядит следующим образом:

1.A process was using malloc to allocate the memory.
2.While allocation process was interrupted and respective signal handler was 
called. 
3.in the signal handler again malloc was called, which leads to a hang.

Теперь, после некоторого поиска, я узнал, что я не должен выделять память в обработчике сигналов.

Есть ли способ справиться с этой проблемой, который не требует от меня избегать использования malloc в обработчике сигналов? например, проверка, находится ли malloc в процессе или удерживает блокировку.

1 Ответ

0 голосов
/ 08 мая 2018

Внутри обработчика сигнала вы можете звонить только async-signal-safe functions. malloc не является одним из них. Вы можете попытаться предварительно выделить память для использования в обработчике сигналов заранее (до установки обработчика сигналов).

...