...XS mortalizes any SV* that you return via its RETVAL mechanism ... and the description in perlxs seems suspicious to me to (it claims that RETVAL is mortalized via the typemap file, but I'm looking at the typemap and I see no relevant mention of 'mortal' anywhere -- nor any mention of RETVAL.)
is mortalized by xsubpp
itself (see the generate_output
cruft in the xsubpp
source) - so it is hardwired into XS... But it usually turns out to do what you want, except for the cases, when it does not.