Yep. The default behavior is great for core perl development but can be a major headache for green XS and embedding authors.
The 'secret' is to
#define NO_XSLOCKS before including XSUB.h. If left undefined, XSUB.h will redefine a
long list of functions/macros (including free, malloc, and exit) with internal versions.