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

Reply via email to