Why is malloc not async signal safe?

2020-02-05 12:14发布

Why can't malloc be used in signal handlers? What can "happen wrong"?

标签: unix
1条回答
家丑人穷心不美
2楼-- · 2020-02-05 12:35

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.
查看更多
登录 后发表回答