On Thu, 2005-03-10 at 16:36 -0500, [EMAIL PROTECTED] wrote:
> Seems to have went all wrong between 20:35 and 21:35 on 9th(gmt).
> With only the loosest understanding of stuff I think ( a little
> knowledge can be a dangerous thing) it may be related to
>
> pmc.c
>
> revision 1.95
> date: 2005/03/09 14:52:01; author: leo; state: Exp; lines: +2 -2
> Objects 1 - class, mro vtable slots
>
> * renamed vtable->data to class as this is it's usage anyway
> * new vtable->mro slot - empty for now
That's my guess too. It segfaults for me during make:
If the next line prints 0.1.2-devel, it did help.
./parrot parrot-config.imc VERSION DEVEL
make: *** [runtime/parrot/include/config.fpmc] Segmentation fault
make: *** Deleting file `runtime/parrot/include/config.fpmc'
The parrot trace is:
$ parrot -t parrot-config.imc VERSION DEVEL
0 set P15, P5 - P15=PMCNULL, P5=SArray=PMC(0x1054bf78)
3 set I14, P15 - I14=0, P15=SArray=PMC(0x1054bf78)
6 lt I14, 2, 97 - I14=3, ,
10 set P14, PMC_C[12] - P14=PMCNULL,
13 set I0, 1 - I0=0,
16 set I1, 0 - I1=0,
19 set I2, 0 - I2=0,
22 set I3, 0 - I3=1,
25 set I4, 0 - I4=0,
28 set P0, P14 - P0=PMCNULL, P14=Sub=PMC(0x1054bf90
Adr:0x105ed9cc)
31 invokecc
# Calling sub '_config'
# in file 'parrot-config.imc' near line 32
113 open P15, "runtime/parrot/inclu", "<" - P15=PMCNULL, ,
117 defined I30, P15 - I30=0, P15=ParrotIO=PMC(0x1054bf30)
120 if I30, 17 - I30=1,
137 read S30, P15, 60000 - , P15=ParrotIO=PMC(0x1054bf30),
141 close P15 - P15=ParrotIO=PMC(0x1054bf30)
143 thaw P30, S30 - P30=PMCNULL, S30="(null)"
The backtrace is:
#0 0x100aff70 in pobject_lives (interpreter=0x1038e678, obj=0x35)
at src/dod.c:196
#1 0x1026920c in Parrot_SArray_mark (interpreter=0x1038e678,
pmc=0x1054d748)
at classes/sarray.c:276
#2 0x100b05c4 in Parrot_dod_trace_children (interpreter=0x1038e678,
how_many=4294967295) at src/dod.c:460
#3 0x100b037c in trace_active_PMCs (interpreter=0x1038e678,
trace_stack=1)
at src/dod.c:378
#4 0x100b1188 in Parrot_dod_ms_run (interpreter=0x1038e678, flags=1)
at src/dod.c:1200
#5 0x100b12a8 in Parrot_do_dod_run (interpreter=0x1038e678, flags=1)
at src/dod.c:1239
#6 0x10142c0c in mem_allocate (interpreter=0x1038e678,
req_size=0x7ffff174,
pool=0x103aec80, align_1=15) at src/resources.c:142
#7 0x10143ab0 in Parrot_allocate_string (interpreter=0x1038e678,
str=0x105e4e98, size=1061) at src/resources.c:613
#8 0x10062e04 in string_make_direct (interpreter=0x1038e678,
buffer=0x105d2198, len=1061, encoding=0x103aee88,
charset=0x103aef28,
flags=131072) at src/string.c:668
...
I set a breakpoint near #1:
Breakpoint 1, Parrot_SArray_mark (interpreter=0x1038e678,
pmc=0x1054d748)
at classes/sarray.c:275
275 if (UVal_pmc(e->val))
(gdb) p e
$1 = (HashEntry *) 0x10555298
(gdb) p e->val
$2 = {_b = {_bufstart = 0x0, _buflen = 53}, _ptrs = {_struct_val = 0x0,
_pmc_val = 0x35}, _i = {_int_val = 0, _int_val2 = 53},
_num_val = 2.6185479229586067e-322, _string_val = 0x0}
(gdb) x interpreter
0x1038e678: 0x30893ae8
(gdb) p interpreter
$3 = (Interp *) 0x1038e678
(gdb) p e->val
$4 = {_b = {_bufstart = 0x0, _buflen = 53}, _ptrs = {_struct_val = 0x0,
_pmc_val = 0x35}, _i = {_int_val = 0, _int_val2 = 53},
_num_val = 2.6185479229586067e-322, _string_val = 0x0}
(gdb) p 0x35
$5 = 53
(gdb) p (PObj*) 0x35
$6 = (Buffer *) 0x35
-- c