Hi,

I'm the author of a perl XS module which is a wrapper around
a C++ library that is thread-safe. However in the
context of Perl is doesn't seem to be.

When I do the following:

===============================
#!/usr/bin/perl

use Lucene;
use threads;
use strict;

my $analyzer = new Lucene::Analysis::Standard::StandardAnalyzer;

sub test {
  print "pass\n";
};

my $thr = threads->create('test');
$thr->join();

undef $analyzer;

print "pass2\n";
exit(0);
===============================

I get:

pass
Segmentation fault

It seems there is a problem during the destruction of the
object that was created before threads->create. What
could be the cause of this problem ?

The source code of the XS module is here:
http://search.cpan.org/src/TBUSCH/Lucene-0.13/

What are the usual things to look out for when
writing thread-safe XS modules that use external
libraries ?

Thomas.




Reply via email to