I am a colleague of Mr. Pust. I've compiled his fixes, including a
successful test, on Perl 5.8.5 as i386-linux-thread-multi and
x86_64-linux-thread-multi platforms.
However, when compiling for Perl 5.8.8 on x86_64-linux-thread-multi, the
"make test" fails in test 09, sometimes with SIGBUS and sometimes with
SIGSEGV. Looking at the core file, the offensive
t/00_load............ok
t/01_new.............ok
t/02_insert..........ok
t/03_lcs.............ok
t/04_lrs.............ok
t/05_clear...........ok
t/06_remove..........ok
t/07_memleak.........ok
t/08_find............ok
t/09_duplicates......dubious
Test returned status 0 (wstat 135, 0x87)
DIED. FAILED tests 2-13
Failed 12/13 tests, 7.69% okay
t/10_pod.............ok
t/11_pod_coverage....ok
t/12_string..........ok
Failed Test Stat Wstat Total Fail List of Failed
-------------------------------------------------------------------------------
t/09_duplicates.t 0 135 13 24 2-13
Failed 1/13 test scripts. 12/59 subtests failed.
Files=13, Tests=59, 2 wallclock secs ( 1.00 cusr + 0.28 csys = 1.28 CPU)
Failed 1/13 test programs. 12/59 subtests failed.
I detected a core file generated by a bus error:
#0 XS_Tree__Suffix_remove (my_perl=Variable "my_perl" is not
available.) at Suffix.xs:169
#1 0x0000002a955f351b in Perl_pp_entersub (my_perl=0x504010) at
pp_hot.c:2877
#2 0x0000002a955d8422 in Perl_runops_debug (my_perl=0x504010) at
dump.c:1459
#3 0x0000002a955932e4 in perl_run (my_perl=0x504010) at perl.c:2366
#4 0x00000000004019fc in main (argc=3, argv=0x7fbffff4c8, env=Variable
"env" is not available.)
at perlmain.c:99
The second time around was a SIGSEGV.
(gdb) where
#0 XS_Tree__Suffix_remove (my_perl=Variable "my_perl" is not
available.) at Suffix.xs:169
#1 0x0000002a955f351b in Perl_pp_entersub (my_perl=0x504010) at
pp_hot.c:2877
#2 0x0000002a955d8422 in Perl_runops_debug (my_perl=0x504010) at
dump.c:1459
#3 0x0000002a955932e4 in perl_run (my_perl=0x504010) at perl.c:2366
#4 0x00000000004019fc in main (argc=3, argv=0x7fbffff4f8, env=Variable
"env" is not available.)
at perlmain.c:99
The offensive source line:
169 if (lst_string_get_length(hi->string) != len)