in reply to Malloc is not reentrant?

It means that if you have a program that calls malloc() and it gets interrupted for another task that calls malloc(), there's no guarantee that the original call won't be thrashed by the second. An interesting link about glibc is here.

Effectively, this comes up in Perl when you write your own signal handlers. As they're invoked via signals (interrupting the normal flow of operation), there's a possibility that another signal could come in as you are trying to deal with the first.

That's still not a very effective explanation. Okay, think of it like spinning plates on sticks. You'll be better at it when you only have one to do. If you get interrupted while spinning one to go do another, you might have a crash a few moments later.

(Get around this by doing as little as possible in your signal handlers.)