Eric Parusel
2004-Dec-06 21:51 UTC
[Xapian-discuss] Search::Xapian::WritableDatabase SIGABRT?
Hello, On certain xapian dbs (my two largest ones, hrm) I cannot write data to them anymore, without my import perl script aborting... Searches on both these dbs seemingly work fine. Size of files in each of those db's: (z-2004, and t-2004 fails, the rest work fine) 844M i-2004 877M g-2004 890M a-2004 1.3G z-2004 4.5G t-2004 t-2004 file listing: 0 Dec 6 13:13 db_lock 10 Oct 27 14:40 meta 0 Oct 27 14:40 position_DB 17 Nov 29 23:13 position_baseA 17 Nov 29 22:58 position_baseB 2465808384 Nov 29 23:29 postlist_DB 37643 Nov 29 23:13 postlist_baseA 15122432 Nov 29 23:28 record_DB 223 Nov 29 23:13 record_baseA 2304335872 Nov 29 23:28 termlist_DB 35186 Nov 29 23:13 termlist_baseA 0 Oct 27 14:40 value_DB 17 Nov 29 23:13 value_baseA 17 Nov 29 22:58 value_baseB Here is the perl script snippet where it crashes (notice that it's in an eval{} block, to no avail) The first print() is printed, the 2nd print() is not, it crashes before it exits the eval block it seems. =========================================================# Open Xapian DB print "\nTRY #" . $count . "\n"; eval { $dbobject = Search::Xapian::WritableDatabase->new( $xapian_db_path, Search::Xapian::DB_CREATE_OR_OPEN); }; print "Connected\n"; ========================================================= Once it "crashes" it leaves a db_lock file. I can email the straces I took for both dbs, without db_lock and with db_lock already present, if requested... both states result in an abort. Also, here is perl debugging output, it might be obvious, but it crashes while on the $database = new1( @_ ); line, could it be an issue with Search::Xapian? I am currently using version 0.8.3.1 (confirmed by print $Search::Xapian::VERSION). =========================================================main::open_xapian_db(ak.pl:450): print "\nTRY #" . $count . "\n"; DB<1> TRY #1 main::open_xapian_db(ak.pl:451): eval { DB<1> main::open_xapian_db(ak.pl:452): $dbobject = Search::Xapian::WritableDatabase->new( main::open_xapian_db(ak.pl:453): $xapian_db_path, main::open_xapian_db(ak.pl:454): Search::Xapian::DB_CREATE_OR_OPEN); DB<1> Search::Xapian::DB_CREATE_OR_OPEN(/usr/local/lib/perl/5.6.1/Search/Xapian.pm:65535): 65535: DB<1> Search::Xapian::WritableDatabase::new(/usr/local/lib/perl/5.6.1/Search/Xapian/WritableDatabase.pm:37): 37: my $class = shift; DB<1> Search::Xapian::WritableDatabase::new(/usr/local/lib/perl/5.6.1/Search/Xapian/WritableDatabase.pm:38): 38: my $database; DB<1> Search::Xapian::WritableDatabase::new(/usr/local/lib/perl/5.6.1/Search/Xapian/WritableDatabase.pm:39): 39: my $invalid_args; DB<1> Search::Xapian::WritableDatabase::new(/usr/local/lib/perl/5.6.1/Search/Xapian/WritableDatabase.pm:40): 40: if( scalar(@_) == 1 ) { DB<1> Search::Xapian::WritableDatabase::new(/usr/local/lib/perl/5.6.1/Search/Xapian/WritableDatabase.pm:49): 49: $database = new1( @_ ); DB<1> Aborted ========================================================= Thanks for any help that can be offered, Eric
Olly Betts
2004-Dec-07 11:31 UTC
[Xapian-discuss] Re: Search::Xapian::WritableDatabase SIGABRT?
On 2004-12-06, Eric Parusel <eparusel@creativens.com> wrote:> Searches on both these dbs seemingly work fine. > > [snip] > > I can email the straces I took for both dbs, without db_lock and with > db_lock already present, if requested... > > both states result in an abort.I suspect it's this bug: http://www.xapian.org/cgi-bin/bugzilla/show_bug.cgi?id=55 If it is, it looks like the Perl bindings don't handle C++ exceptions as they should, at least in this case - both the "with db_lock" and "without db_lock" cases will throw exceptions, just different ones. Try applying the patch in that bug, or try a CVS snapshot (the ones currently available are pretty close to what 0.8.4 will be - I'd have made the release by now, but I'm presently unable to ssh to James' colo box which hosts most of xapian.org...) Cheers, Olly