Subject: | Storable (2.14) |
I am unable to simply reproduce the following.
Using Storable as the serializer for CGI::Session and SQLite (CGI::Session::SQLite), Storable is segfaulting during global destruction as it attempts to freeze() an object.
The abbreviated call stack from gdb is perl_destruct ... XS_Storable_mstore ... do_store ... clean_store_context ... Perl_hv_iterinit (dead here).
The object is a hash that contains session data. Data::Dumper dumps it just fine.
It seems that it would be useful for Storable to function during global destruction, because destructors might well contain freeze(), but in this one particular case it doesn't seem to work.
Explicitly flushing the session (which calls Storable::freeze) at normal runtime solves the problem just fine, as does flushing during an END{} block.
This is perl 5.8.6 (i686 linux) with the most recent versions of the above mentioned modules available at this time.