Found and solved an interesting little bug in someone else's application today.

Their unit tests ran fine, but the application itself always died instantly,
with an error from Class::C3::XS.. so they thought the bug was in DBIx::Class,
or rather their use of it, and we spent a lot of time hunting around there..
and it was really annoying me that we just couldn't reproduce the problem
in unit tests though.. just on an actual apache-based server.

Eventually, hit upon the server's startup.pl.. Turns out that inside it was
a (global) $SIG{__DIE__} handler.. Aargh!

They were using this to try and catch fatal errors in their applications..
Except of course these handlers are completely broken and get called by deaths
in eval{} blocks, thus preventing ANY eval{} code from working.. including the
ones in DBIx::Class and Catalyst. *rolls eyes*

I can't believe their major application has NOT hit this problem before!
I just thought I'd mention it, in case anyone else has to debug something where
cat/dbic is mysteriously dieing - grep for __DIE__!

Cheers,
Toby

_______________________________________________
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/

Reply via email to