in reply to A phantom death

To get where the die really occurs, there's Carp, specifically Carp::confess. You can set $SIG{__DIE__} = \&Carp::confess to get a stack trace, though it's not always accurate.

If this die is occurring inside DBI, a RaiseError =>1 passed to the connect() method should give you useful information.