# New Ticket Created by Geraud CONTINSOUZAS
# Please include the string: [perl #59340]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=59340 >
---
osname= freebsd
osvers= 7.1-prerelease
arch= i386-freebsd-thread-multi-64int
cc= cc
---
Flags:
category=core
severity=medium
ack=no
---
I reported a problem on IRC yesterday and was prompted to file a bug. So here
we go.
[217]# prove t/stm/runtime.t
t/stm/runtime....ok 1/5
# Failed test 'queue adapted for the library'
# in t/stm/runtime.t at line 506.
t/stm/runtime....NOK 4# Exited with error code: 139
# Received:
# Segmentation fault (core dumped)
#
# Expected:
# ok
#
# Looks like you failed 1 test of 5.
[218]# gdb ./parrot
GNU gdb 6.1.1 [FreeBSD]
...
(gdb) r t/stm/runtime_4.pir
Starting program: /usr/home/geraud/code/parrot/parrot t/stm/runtime_4.pir
[New LWP 100284]
[New Thread 0x8101100 (LWP 100284)]
[New Thread 0x8101200 (LWP 100311)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x8101100 (LWP 100284)]
0x281c0ad7 in Parrot_dod_trace_children (interp=0x8106040, how_many=4294966630)
at src/gc/dod.c:399
399 const UINTVAL bits = PObj_get_FLAGS(current) & mask;
(gdb) p mask
$1 = 17825792
(gdb) p current
$2 = (PMC *) 0x0
(gdb) p arena_base->dod_mark_start
$3 = (PMC *) 0x819cef4
(gdb) bt
#0 0x281c0ad7 in Parrot_dod_trace_children (interp=0x8106040,
how_many=4294966630) at src/gc/dod.c:399
#1 0x281c0a74 in trace_active_PMCs (interp=0x8106040, trace_stack=1) at
src/gc/dod.c:362
#2 0x281c15a7 in Parrot_dod_ms_run (interp=0x8106040, flags=1) at
src/gc/dod.c:1140
#3 0x281c16aa in Parrot_do_dod_run (interp=0x8106040, flags=1) at
src/gc/dod.c:1190
#4 0x281c2f78 in more_traceable_objects (interp=0x8106040, pool=0x815e150) at
src/gc/smallobject.c:163
#5 0x281c305a in gc_ms_get_free_object (interp=0x8106040, pool=0x815e150) at
src/gc/smallobject.c:245
#6 0x281c6023 in new_pmc_header (interp=0x8106040, flags=0) at
src/headers.c:322
#7 0x281f9f86 in get_new_pmc_header (interp=0x8106040, base_type=36, flags=0)
at src/pmc.c:267
#8 0x281fa15c in pmc_new_init (interp=0x8106040, base_type=36, init=0x81fdb88)
at src/pmc.c:367
#9 0x2837adec in Parrot_Hash_get_iter (interp=0x8106040, pmc=0x81fdb88) at
hash.pmc:581
#10 0x28203fdd in pt_ns_clone (d=0x8106260, dest_ns=0x877cb88, s=0x8106040,
source_ns=0x81fdb88) at src/thread.c:550
#11 0x28204104 in pt_ns_clone (d=0x8106260, dest_ns=0x86237b4, s=0x8106040,
source_ns=0x819d7b4) at src/thread.c:566
#12 0x28204104 in pt_ns_clone (d=0x8106260, dest_ns=0x86237d0, s=0x8106040,
source_ns=0x819d7d0) at src/thread.c:566
#13 0x28204228 in pt_clone_globals (d=0x8106260, s=0x8106040) at
src/thread.c:599
#14 0x2832a855 in clone_interpreter (d=0x8106260, s=0x8106040, flags=127) at
parrotinterpreter.pmc:137
#15 0x2832cefe in do_thread_run (interp=0x8106040, thread=0x835d6a8,
clone_flags=127, sub=0x835f75c, args=0x835a014) at parrotthread.pmc:65
#16 0x2832cffe in do_thread_run_clone_default (interp=0x8106040,
thread=0x835d6a8, sub=0x835f75c, args=0x835a014) at parrotthread.pmc:82
#17 0x281d937d in pcf_I_JOPxAT_ (interp=0x8106040, self=0x81fefc4) at
src/nci.c:983
#18 0x28340462 in Parrot_NCI_invoke (interp=0x8106040, pmc=0x81fefc4,
next=0x8382824) at nci.pmc:308
#19 0x2816d1e0 in Parrot_callmethodcc_p_sc (cur_opcode=0x8382818,
interp=0x8106040) at object.ops:78
#20 0x281fab2c in runops_slow_core (interp=0x8106040, pc=0x8382818) at
src/runops_cores.c:222
#21 0x281cd7d9 in runops_int (interp=0x8106040, offset=463) at
src/interpreter.c:937
#22 0x281ce063 in runops (interp=0x8106040, offs=463) at src/inter_run.c:101
#23 0x281ce300 in runops_args (interp=0x8106040, sub=0x835f740, obj=0x81a1870,
meth_unused=0x0, sig=0x28427e23 "vP", ap=0xbfbfe89c "$÷5\bž\005")
at src/inter_run.c:236
#24 0x281ce43c in Parrot_runops_fromc_args (interp=0x8106040, sub=0x835f740,
sig=0x28427e23 "vP") at src/inter_run.c:300
#25 0x281b8627 in Parrot_runcode (interp=0x8106040, argc=1, argv=0xbfbfe9ac) at
src/embed.c:951
#26 0x28404622 in imcc_run_pbc (interp=0x8106040, obj_file=0, output_file=0x0,
argc=1, argv=0xbfbfe9ac) at compilers/imcc/main.c:791
#27 0x28405012 in imcc_run (interp=0x8106040, sourcefile=0xbfbfeb04
"t/stm/runtime_4.pir", argc=1, argv=0xbfbfe9ac) at compilers/imcc/main.c:1079
#28 0x08048892 in main (argc=1, argv=0xbfbfe9ac) at src/main.c:61
(gdb) quit
[219]#
Here are the last comments from chromatic who helped me obtain a trace on IRC:
<chromatic> Can you do one more thing from the frame where you p mask and p
current?
<chromatic> p arena_base->dod_mark_start
<GeJ> (gdb) p arena_base->dod_mark_start
<GeJ> $3 = (PMC *) 0x819cef4
<chromatic> Figured, but good to know. Thanks.
<chromatic> There's a loop over all destroy-now PMCs in that function.
<chromatic> Somehow, one of them in the linked list is NULL, and not the
PMCNULL kind of NULL.
<chromatic> It's not the first one in the linked list though, which is good to
know.
Hope this helps. I'm idling on #parrot in case additional information/testing
is required.
Best regards,
Geraud
---
Summary of my parrot 0.7.1 (r31417) configuration:
configdate='Thu Sep 25 21:08:06 2008 GMT'
Platform:
osname=freebsd, archname=i386-freebsd-thread-multi-64int
jitcapable=1, jitarchname=i386-freebsd,
jitosname=FREEBSD, jitcpuarch=i386
execcapable=1
perl=perl
Compiler:
cc='cc', ccflags='-pipe -march=prescott -mtune=prescott
-DHASATTRIBUTE_CONST -DHASATTRIBUTE_DEPRECATED -DHASATTRIBUTE_MALLOC
-DHASATTRIBUTE_NONNULL -DHASATTRIBUTE_NORETURN -DHASATTRIBUTE_PURE
-DHASATTRIBUTE_UNUSED -DHASATTRIBUTE_WARN_UNUSED_RESULT -falign-functions=16
-fvisibility=hidden -maccumulate-outgoing-args -W -Wall -Waggregate-return
-Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wdisabled-optimization
-Wendif-labels -Wextra -Wformat -Wformat-extra-args -Wformat-nonliteral
-Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline
-Winvalid-pch -Wmissing-braces -Wmissing-field-initializers
-Wno-missing-format-attribute -Wmissing-include-dirs -Wpacked -Wparentheses
-Wpointer-arith -Wreturn-type -Wsequence-point -Wno-shadow -Wsign-compare
-Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch -Wswitch-default -Wtrigraphs
-Wundef -Wunknown-pragmas -Wno-unused -Wvariadic-macros -Wwrite-strings
-Wlarger-than-4096 -Wbad-function-cast -Wc++-compat -!
Wdeclaration-after-statement -Werror=declaration-after-statement
-Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wnonnull -DDISABLE_GC_DEBUG=1 -DNDEBUG
-g -I /usr/local/include',
Linker and Libraries:
ld='cc', ldflags=' -L/usr/lib -L/usr/local/lib',
cc_ldflags='',
libs='-lm -lcrypt -lutil -pthread -lreadline -lcrypto'
Dynamic Linking:
share_ext='.so', ld_share_flags='-shared -L/usr/local/lib',
load_ext='.so', ld_load_flags='-shared -L/usr/local/lib'
Types:
iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4,
ptrsize=4, ptr_alignment=1 byteorder=1234,
nv=double, numvalsize=8, doublesize=8
---
Environment:
HOME =/home/geraud
LANG =en_US.ISO8859-15
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH
=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/geraud/bin:./bin:.
PERL5LIB =/home/geraud/lib/perl
SHELL =/bin/tcsh