Skip Menu |

This queue is for tickets about the DBD-Informix CPAN distribution.

Report information
The Basics
Id: 75575
Status: new
Priority: 0/
Queue: DBD-Informix

Owner: Nobody in particular
Requestors: ljudoed [...]

Bug Information
Severity: Normal
Broken in: 2011.0612
Fixed in: (no value)

Subject: code dumps on dbd_ix_dr_discon_all
Download (untitled) / with headers
text/plain 2.3k
root@stats-test etc]# uname -a Linux stats-test 2.6.18-128.el5PAE #1 SMP Wed Dec 17 12:02:33 EST 2008 i686 i686 i386 GNU/Linux ---------------------------- [root@stats-test etc]# perl -v This is perl, v5.8.8 built for i386-linux-thread-multi ---------------------------- DBI version 1.52 ---------------------------- #0 dbd_ix_link_delete (link_d=0x87226c0, function=0xf43a60 <dbd_db_destroyer>) at link.c:73 73 link_2->prev = link_1; (gdb) bt #0 dbd_ix_link_delete (link_d=0x87226c0, function=0xf43a60 <dbd_db_destroyer>) at link.c:73 #1 0x00f47b5e in dbd_ix_link_delchain (head=0x83689d8, function=0xf43a60 <dbd_db_destroyer>) at link.c:85 #2 0x00f43a3d in dbd_ix_dr_discon_all (drh=0x86f7c4c, imp_drh=0x8368978) at #3 0x00f3e5ae in XS_DBD__Informix__dr_discon_all_ (my_perl=0x834b008, cv=0x86f7814) at Informix.xsi:44 #4 0x00278c55 in XS_DBI_dispatch () from /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBI/ #5 0x0076c42d in Perl_pp_entersub () from /usr/lib/perl5/5.8.8/i386- linux-thread-multi/CORE/ #6 0x0076589f in Perl_runops_standard () from /usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/ #7 0x0070600e in ?? () from /usr/lib/perl5/5.8.8/i386-linux-thread- multi/CORE/ #8 0x0070a816 in Perl_call_sv () from /usr/lib/perl5/5.8.8/i386-linux- thread-multi/CORE/ #9 0x0070ab3b in Perl_call_list () from /usr/lib/perl5/5.8.8/i386- linux-thread-multi/CORE/ #10 0x0070c91e in perl_destruct () from /usr/lib/perl5/5.8.8/i386-linux- thread-multi/CORE/ #11 0x080491c7 in main () ------------------------ This bug is reproducible only when the connection is disconnected from the server (or on network failure) and then the script reconnects using $dbh->connect without disconnecting first. I did some debugging and I found that the problem is that the dbd_ix_db_destroy is not cleaning when the connection is not active and dbd_ix_link_delete is trying to access memory which was already overwritten. I think that this patch should fix the problem. @@ -934,7 +934,7 @@ { static const char function[] = "dbd_ix_db_destroy"; dbd_ix_enter(function); - if (DBIc_is(imp_dbh, DBIcf_ACTIVE)) + if (DBIc_is(imp_dbh, DBIcf_IMPSET)) dbd_ix_db_disconnect(dbh, imp_dbh); DBIc_off(imp_dbh, DBIcf_IMPSET); dbd_ix_exit(function); However I'm not sure if this will not break something else.

This service is sponsored and maintained by Best Practical Solutions and runs on infrastructure.

Please report any issues with to