in reply to IPC::Open3::Simple closes database connection on error.

If POSIX can be loaded, then _exit is used on exec failure.

exec @cmd or do { carp "$Me: exec of @cmd failed"; eval { require POSIX; POSIX::_exit(255); }; exit 255; };

Using _exit should avoid the problem because _exit doesn't allow destructors to be run.

>perl -MPOSIX -le"DESTROY{print q{foo}}$o=bless{};$ARGV[0]?_exit 1:exi +t 1" 1 >perl -MPOSIX -le"DESTROY{print q{foo}}$o=bless{};$ARGV[0]?_exit 1:exi +t 1" 0 foo

Could there be a problem loading POSIX?