Hello,
Is this possible a bug in DBI?
We have some bigger applications (> 250k perl code) and all
with a database connects will segfault on exit.
We traced it and found something, we dont fully understand.
Normal, the follow foreach must do one pass with
$_ = 'mysql' (the one key from %DBI::installed_drh).
It doesnt does.
--------------- cut ---------------
main::exiting(dominion:9032): $db->disconnect;
DB<9>
main::exiting(dominion:9033): &Gtk::main_quit;
DB<9>
main::(dominion:1682): exit 0;
DB<9>
DBI::CODE(0x82533a0)(/usr/lib/perl5/site_perl/5.005/i686-linux/DBI.pm:318):
318: DBI->trace_msg(" -> DBI::END\n") if $DBI::dbi_debug >= 2;
DB<9> p $DBI::dbi_debug
0
DB<10>
DBI::CODE(0x82533a0)(/usr/lib/perl5/site_perl/5.005/i686-linux/DBI.pm:320):
320: $DBI::PERL_ENDING = $DBI::PERL_ENDING = 1; # avoid typo
warning
DB<10>
DBI::CODE(0x82533a0)(/usr/lib/perl5/site_perl/5.005/i686-linux/DBI.pm:321):
321: DBI->disconnect_all() if %DBI::installed_drh;
DB<10> p %DBI::installed_drh
mysqlDBI::dr=HASH(0x82783c4)
DB<11> p keys %DBI::installed_drh
mysql <-- one key 'mysql'
DB<12> p $DBI::installed_drh{'mysql'}
DBI::dr=HASH(0x82783c4)
DB<13>
DBI::disconnect_all(/usr/lib/perl5/site_perl/5.005/i686-linux/DBI.pm:414):
414: foreach(keys %DBI::installed_drh){ <-- one run for the
foreach() with 'mysql'
DB<13> p $_ <-- but $_ doesnt include the key entry
DB<14>
DBI::disconnect_all(/usr/lib/perl5/site_perl/5.005/i686-linux/DBI.pm:415):
415: my $drh = $DBI::installed_drh{$_};
DB<14> p $drh
DB<15>
--------------- cut ---------------
thats our code, that was here debugged
--------------- cut ---------------
sub exiting {
$db->disconnect;
&Gtk::main_quit;
}
--------------- cut ---------------
Any ideas? Suggestions?
Yours
--
ads
Andreas Scherbaum
| Thread |
|---|
| • Bug in DBI? | Andreas Scherbaum | 29 May |