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