Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is malloc not async signal safe?

Tags:

unix

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

like image 516
Karel Bílek Avatar asked Jul 29 '10 19:07

Karel Bílek


1 Answers

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.
like image 162
JSBձոգչ Avatar answered Oct 23 '22 08:10

JSBձոգչ