[sword-devel] Segmentation fault in Perl bindings.

Mark Trompell mark at foresightlinux.org
Wed Aug 14 03:34:01 MST 2013


Works for me. So better release 1.7.0 soon before I find something else.
My secret agenda is delaying it to r3000 :-P


On Wed, Aug 14, 2013 at 7:13 AM, Greg Hellings <greg.hellings at gmail.com> wrote:
> I have committed two fixes to Perl:
> One fixes the intermittent builds that I was experiencing. It turns out that
> CMake and Swig were both generating files named 'Makefile' in the build
> directory. Now the Perl files generate Makefile.perlswig instead.
>
> The other fixes the seg fault on exit that was in your test case for me. I
> did it simply by conditionally compiling in the __str__ method of SWKey for
> Perl that was the source of the offense. It will now build in Python but not
> Perl. This fixes the Seg Fault for me in your minimal test case. Hopefully
> it doesn't break any expected functionality.
>
> --Greg
>
>
> On Tue, Aug 13, 2013 at 2:04 AM, Mark Trompell <mark at foresightlinux.org>
> wrote:
>>
>> Adding some more details:
>> main::(Perlbindingstest.pl:4):  my $mgr = new Sword::SWMgr();
>>   DB<1> l
>> 4==>    my $mgr = new Sword::SWMgr();
>> 5:      my $neu = $mgr->getModule("GerNeUe");
>> 6:      my $key = new Sword::SWKey("Genesis 1:1");
>> 7:      $neu->setKey($key);
>> 8:      print $neu->renderText(),"\n";
>>   DB<1> n
>> main::(Perlbindingstest.pl:5):  my $neu = $mgr->getModule("GerNeUe");
>>   DB<1> n
>> main::(Perlbindingstest.pl:6):  my $key = new Sword::SWKey("Genesis 1:1");
>>   DB<1> n
>> main::(Perlbindingstest.pl:7):  $neu->setKey($key);
>>   DB<1> n
>> main::(Perlbindingstest.pl:8):  print $neu->renderText(),"\n";
>>   DB<1> s
>>
>> Sword::SWBuf::CODE(0x93a6c0)(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:59):
>> 59:         '""' => sub { $_[0]->__str__()},
>>   DB<1> s
>>
>> Sword::SWBuf::CODE(0x93a6c0)(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:59):
>> 59:         '""' => sub { $_[0]->__str__()},
>>   DB<1> s
>> Im Anfang schuf Gott Himmel und Erde.
>> Sword::SWKey::DESTROY(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:968):
>> 968:        return unless $_[0]->isa('HASH');
>>   DB<1> s
>> Sword::SWKey::DESTROY(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:969):
>> 969:        my $self = tied(%{$_[0]});
>>   DB<1> s
>> Sword::SWKey::DESTROY(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:969):
>> 969:        my $self = tied(%{$_[0]});
>>   DB<1> s
>> Sword::SWKey::DESTROY(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:970):
>> 970:        return unless defined $self;
>>   DB<1> s
>> Sword::SWKey::DESTROY(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:971):
>> 971:        delete $ITERATORS{$self};
>>   DB<1> s
>>
>> Sword::SWKey::CODE(0xb3fb90)(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:949):
>> 949:        '""' => sub { $_[0]->__str__()},
>>   DB<1> s
>> Sword::SWKey::DESTROY(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:972):
>> 972:        if (exists $OWNER{$self}) {
>>   DB<1> s
>>
>> Sword::SWKey::CODE(0xb3fb90)(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:949):
>> 949:        '""' => sub { $_[0]->__str__()},
>>   DB<1> s
>> Sword::SWKey::DESTROY(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:973):
>> 973:            Swordc::delete_SWKey($self);
>>   DB<1> s
>>
>> Sword::SWKey::CODE(0xb3fb90)(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:949):
>> 949:        '""' => sub { $_[0]->__str__()},
>>   DB<1> s
>>
>> Sword::SWKey::CODE(0xb3fb90)(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:949):
>> 949:        '""' => sub { $_[0]->__str__()},
>>   DB<1> s
>> Sword::SWKey::DESTROY(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:974):
>> 974:            delete $OWNER{$self};
>>   DB<1> s
>>
>> Sword::SWKey::CODE(0xb3fb90)(/usr/lib64/perl5/site_perl/5.8.8/Sword.pm:949):
>> 949:        '""' => sub { $_[0]->__str__()},
>>   DB<1> s
>>
>> Program received signal SIGSEGV, Segmentation fault.
>> 0x00007ffff626ae73 in sword_SWKey___str__ (my_perl=<value optimized
>> out>, cv=<value optimized out>)
>>     at Sword.cxx:2360
>> 2360                            return const_cast<char
>> *>(self->getText());
>>
>>
>> On Tue, Aug 13, 2013 at 7:36 AM, Mark Trompell <mark at foresightlinux.org>
>> wrote:
>> > This is all I can get out of debugging...
>> > Program received signal SIGSEGV, Segmentation fault.
>> > 0x00007ffff646ee73 in sword_SWKey___str__ (my_perl=<value optimized
>> > out>, cv=<value optimized out>)
>> >     at Sword.cxx:2360
>> > 2360                            return const_cast<char
>> > *>(self->getText());
>> >
>> > Probably not helpful at all...
>> > btw it's r2955.
>> >
>> > On Mon, Aug 12, 2013 at 8:53 AM, Mark Trompell <mark at foresightlinux.org>
>> > wrote:
>> >> With my little Perlprogramm I get a segmentation fault. I don't get
>> >> them with a similiar python programm, how would I debug these?
>> >>
>> >> $ ./Perlbindingstest.pl
>> >> Im Anfang schuf Gott Himmel und Erde.
>> >> Segmentation fault
>> >>
>> >>
>> >> Perlbindingstest.pl:
>> >> #!/usr/bin/perl
>> >> use Sword;
>> >>
>> >> my $mgr = new Sword::SWMgr();
>> >> my $neu = $mgr->getModule("GerNeUe");
>> >> my $key = new Sword::SWKey("Genesis 1:1");
>> >> $neu->setKey($key);
>> >> print $neu->renderText(),"\n";
>> >>
>> >> Pythonbindingstest.py:
>> >> #!/usr/bin/python
>> >> import Sword
>> >>
>> >> mgr = Sword.SWMgr()
>> >> neu = mgr.getModule("GerNeUe")
>> >> key = Sword.SWKey("Genesis 1:1")
>> >> neu.setKey(key)
>> >> print (neu.renderText())
>> >>
>> >>
>> >> --
>> >> Mark Trompell
>> >>
>> >> Foresight Linux Xfce Edition
>> >> Cause your desktop should be freaking cool
>> >> (and Xfce)
>> >
>> >
>> >
>> > --
>> > Mark Trompell
>> >
>> > Foresight Linux Xfce Edition
>> > Cause your desktop should be freaking cool
>> > (and Xfce)
>>
>>
>>
>> --
>> Mark Trompell
>>
>> Foresight Linux Xfce Edition
>> Cause your desktop should be freaking cool
>> (and Xfce)
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>
>
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page



-- 
Mark Trompell

Foresight Linux Xfce Edition
Cause your desktop should be freaking cool
(and Xfce)



More information about the sword-devel mailing list