Skip Menu |

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

Report information
The Basics
Id: 9792
Status: resolved
Priority: 0/
Queue: DBD-SQLite

People
Owner: Nobody in particular
Requestors:
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: (no value)
Fixed in: (no value)



Subject: Crashes upon re-executing a statement
When I build a statement and execute it twice with selectall_arrayref, I get a segfault. I don't get the segfault when I build a fresh statement each time. The statement is just a simple 'select <column> from <table> where <column> = ?', bound to different value each time. The relevant backtrace is: #0 0xb71e74ac in vdbeUnbind (p=0x0, i=0) at vdbeapi.c:425 #1 0xb71e755c in bindText (pStmt=0x0, i=1, zData=0x87403b0, nData=0, xDel=0, encoding=1) at vdbeapi.c:455 #2 0xb71e7796 in sqlite3_bind_text (pStmt=0x0, i=0, zData=0x0, nData=0, xDel=0) at vdbeapi.c:514 #3 0xb71be6d1 in sqlite_st_execute (sth=0x870f558, imp_sth=0x873c8f0) at dbdimp.c:355 #4 0xb71aafc7 in XS_DBD__SQLite__db_selectall_arrayref (my_perl=0x814c008, cv=0x871384c) at SQLite.xsi:136 #5 0xb7208b30 in XS_DBI_dispatch () from /usr/lib/perl5/auto/DBI/DBI.so And the relevant trace obtained by setting $dbh->trace('4|ALL|SQL') is: -> selectall_arrayref for DBD::SQLite::db (DBI::db=HASH(0x8737ad0)~0x8737db8 DBI::st=HASH(0x87385b8) HASH(0x8765bd4) 'vek') thr#814c008 sqlite trace: bind into 0x8722fe8: 1 => vek (0) pos 0 at dbdimp.c line 434 sqlite trace: re-prepare statement at dbdimp.c line 316 sqlite trace: params left in 0x8722fe8: 0 at dbdimp.c line 330 sqlite trace: bind 0 type 0 as vek at dbdimp.c line 331 zsh: segmentation fault (core dumped) ./xxxv Note: I first thought that I am passing a wrong reference and so I filed bug #9789. That bug might thus be a false alarm (though it can't hurt to improve sanity-checking). Note: This bug might be related to bugs #9643 and #9663, though neither of them mentions crashing. I'll try to get extra information, if you ask me. My configuration: Debian unstable, perl 5.8.4-5, sqlite3 3.0.8-3, DBI::SQLite 1.07 (installed manualy).
Unfortunately, I can't replicate your problem. My main issue is that I'm not sure exactly how you use selectall_arrayref on a statement twice, since it's a dbh method and does a one shot prepare and execute. Resolving this for now, I'll need a sample failing test script to continue, it this is still failing for you.