开发者

Why is malloc not async signal safe?

Why can't malloc be used in signal handlers? What ca开发者_如何学编程n "happen wrong"?


A signal handler can be called at any time, including during times when another call to malloc is in progress. If this happens, one of two things will occur:

  1. Your process will deadlock inside the signal handler, because malloc will be unable to acquire the heap lock.
  2. Your process will corrupt its heap, because malloc does acquire the lock (or doesn't think it needs it), then proceeds to render the heap inconsistent, leading to a later crash.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜