Well, here are some random observations.
in reply to Random corrupted double-linked list
The backtrace in question shows that a destructor is being called during global destruction; that destructor is calling require - not illegal, but unusal; require is creating a string of some sort, and while trying to grow it, the system malloc detects some internal corruption. This usually means that something corrupted it earlier; either due to a bug in perl, or a bug in an XS module that was earlier loaded.
Building with debugging symbols will get you line numbers and function arguments, while building with Configure -DDEBUGGING may trigger an earlier assertion. But if you're on a system that supports it, you'll be best off using valgrind to see what's happening.
Finally, 5.10.1 is quite old; it may be that a bug is already fixed in 5.12.4 or 5.14.2.