[DBD-SQLite] load_extension("perlvtab.so")
Tim Bunce
Tim.Bunce at pobox.com
Thu Oct 29 23:15:19 GMT 2009
On Thu, Oct 29, 2009 at 11:35:24AM -0400, Brian Duggan wrote:
> $ gdb -c core perl test.pl
> [..]
> Program terminated with signal 11, Segmentation fault.
> #0 0x00f90029 in dbih_clearcom (imp_xxh=0x8c29950) at DBI.xs:1432
> 1432 int debug = DBIS_TRACE_LEVEL;
#define DBIS_TRACE_LEVEL (DBIS->debug & DBIc_TRACE_LEVEL_MASK)
> (gdb) where
> #0 0x00f90029 in dbih_clearcom (imp_xxh=0x8c29950) at DBI.xs:1432
> #1 0x00f8295d in XS_DBD___mem__common_DESTROY (my_perl=0x8c02008, cv=0x8c68c08) at DBI.xs:5135
...
> #15 0x080b8b79 in Perl_sv_clean_objs (my_perl=0x8c02008) at sv.c:495
> #16 0x080af3c7 in perl_destruct (my_perl=0x8c02008) at perl.c:799
Happening during the early object destruction phase of global destruction.
> Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
> PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_ITHREADS
Compiled with MULTIPLICITY and USE_ITHREADS, so DBIS expands to
(*(INT2PTR(dbistate_t**, &SvIVX(DBISTATE_ADDRSV)))). Long story.
I can't think why accessing DBIS->debug would be a problem during the
early object destruction phase of global destruction.
What does "print *imp_xxh->com.std.dbistate" show in gdb?
(I've not tested that so it might not be right.)
This may help, or it may just shift or hide the underlying problem:
--- DBI.xs (revision 13337)
+++ DBI.xs (working copy)
@@ -1436,7 +1436,7 @@
dPERINTERP;
dTHR;
int dump = FALSE;
- int debug = DBIS_TRACE_LEVEL;
+ int debug = DBIc_TRACE_LEVEL(imp_xxh);
int auto_dump = (debug >= 6);
imp_xxh_t * const parent_xxh = DBIc_PARENT_COM(imp_xxh);
/* Note that we're very much on our own here. DBIc_MY_H(imp_xxh) almost */
Tim.
More information about the DBD-SQLite
mailing list