Hi,

On Tuesday 30 March 2004 17:03, Leopold Toetsch wrote:
> Jens Rieks <[EMAIL PROTECTED]> wrote:
> > tar xzf err13.tgz
> > cd err13
> >=2E./parrot languages/EBNF/main.imc ebnf/precedence1.ebnf
> >
> > chrashes, running parrot with -G works.
>
> Can you look again please. It's still crashing but runs much further now.
It is still crashing at the same (C code) point, but the bug is triggered 
later. I think that it is related to the heavy string usage of the parser.
Running parrot with tracing enabled will crash it earlier than without.

 ../parrot -t languages/EBNF/main.imc ebnf/precedence1.ebnf 2>/dev/null
       GC
       GC
       GC
       GC
       DOD
       GC
'(*' = code=10
ebnf/precedence1.ebnf:1:1 debug: calling EBNF::Parser::parseCommentSymbol
ebnf/precedence1.ebnf:1:1 debug: comment start
       DOD
       DOD
       GC
ebnf/precedence1.ebnf:1:19 debug: comment end
       DOD
' ' = code=1
'(*' = code=10
ebnf/precedence1.ebnf:2:1 debug: calling EBNF::Parser::parseCommentSymbol
ebnf/precedence1.ebnf:2:1 debug: comment start
       DOD
       GC
Speicherzugriffsfehler

(DOD and GC should be printed to stderr, should'nt it?)

gdb ../parrot
[snip]
(gdb) r languages/EBNF/main.imc ebnf/precedence1.ebnf
Starting program: /home/jrieks/projekte/parrot/parrot languages/EBNF/main.imc 
ebnf/precedence1.ebnf
[New Thread 16384 (LWP 12554)]
[New Thread 32769 (LWP 12556)]
[New Thread 16386 (LWP 12557)]
[New Thread 32771 (LWP 12558)]
'(*' = code=10
ebnf/precedence1.ebnf:1:1 debug: calling EBNF::Parser::parseCommentSymbol
ebnf/precedence1.ebnf:1:1 debug: comment start
ebnf/precedence1.ebnf:1:19 debug: comment end
' ' = code=1
'(*' = code=10
ebnf/precedence1.ebnf:2:1 debug: calling EBNF::Parser::parseCommentSymbol
ebnf/precedence1.ebnf:2:1 debug: comment start
ebnf/precedence1.ebnf:2:33 debug: comment end
' ' = code=1
'a' = code=3
'=' = code=13
ebnf/precedence1.ebnf:3:2 debug: Atom::created called for class EBNF::Sequence
ebnf/precedence1.ebnf:3:2 debug: calling EBNF::Sequence::pushTerminal( 'a' )
ebnf/precedence1.ebnf:3:1 debug: end of terminal 'a'
ebnf/precedence1.ebnf:3:2 debug: calling EBNF::Parser::definingSymbol
ebnf/precedence1.ebnf:3:2 debug: Atom::created called for class 
EBNF::MetaIdentifier
ebnf/precedence1.ebnf:3:2 debug: defining meta-identifier 'a'
ebnf/precedence1.ebnf:3:2 debug: Atom::newTarget called for class 
EBNF::MetaIdentifier
ebnf/precedence1.ebnf:3:2 debug: setTarget = EBNF::SingleDefinition
ebnf/precedence1.ebnf:3:2 debug: Atom::newTarget called for class 
EBNF::SingleDefinition
'Q' = code=3
'|' = code=14
ebnf/precedence1.ebnf:3:4 debug: calling 
EBNF::DefinitionsList::pushTerminal( 'Q' )
ebnf/precedence1.ebnf:3:3 debug: end of terminal 'Q'
ebnf/precedence1.ebnf:3:4 debug: calling 
EBNF::DefinitionsList::definitionSeperator
ebnf/precedence1.ebnf:3:4 debug: Atom::newTarget called for class 
EBNF::DefinitionsList
ebnf/precedence1.ebnf:3:4 debug: setTarget = EBNF::SingleDefinition
'x' = code=3
',' = code=12
ebnf/precedence1.ebnf:3:6 debug: calling 
EBNF::SingleDefinition::pushTerminal( 'x' )

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 12554)]
0x080c0945 in pobject_lives (interpreter=0x82193d0, obj=0x40205120) at 
src/dod.c:141
141         if (*dod_flags & ((PObj_on_free_list_FLAG | PObj_live_FLAG) << 
nm))
(gdb) bt
#0  0x080c0945 in pobject_lives (interpreter=0x82193d0, obj=0x40205120) at 
src/dod.c:141
#1  0x080b84c1 in list_mark (interpreter=0x82193d0, list=0x4109dd80) at 
src/list.c:1366
#2  0x0819d0cf in Parrot_Array_mark (interpreter=0x82193d0, pmc=0x40385ac0) at 
array.c:180
#3  0x080c0e48 in trace_children (interpreter=0x82193d0, current=0x40385ac0)
    at src/dod.c:382
#4  0x080c0b70 in trace_active_PMCs (interpreter=0x82193d0, trace_stack=1)
    at src/dod.c:300
#5  0x080c14d1 in Parrot_do_dod_run (interpreter=0x82193d0, flags=1) at 
src/dod.c:1029
#6  0x080bf884 in more_traceable_objects (interpreter=0x82193d0, 
pool=0x8239d20)
    at src/smallobject.c:110
#7  0x080bf916 in get_free_object (interpreter=0x82193d0, pool=0x8239d20)
    at src/smallobject.c:176
#8  0x080bfd60 in get_free_pmc (interpreter=0x82193d0, pool=0x8239d20) at 
src/headers.c:53
#9  0x08088226 in get_new_pmc_header (interpreter=0x82193d0, base_type=41, 
constant=0)
    at src/pmc.c:107
#10 0x0808847c in pmc_new_noinit (interpreter=0x82193d0, base_type=41) at 
src/pmc.c:214
#11 0x0808819c in pmc_new (interpreter=0x82193d0, base_type=41) at 
src/pmc.c:71
#12 0x080863fa in new_ret_continuation_pmc (interp=0x82193d0, 
address=0x8603404)
    at src/sub.c:433
#13 0x080c82ef in Parrot_invokecc (cur_opcode=0x8603400, 
interpreter=0x82193d0)
    at core.ops:430
#14 0x0808756d in runops_slow_core (interpreter=0x82193d0, pc=0x8603400)
    at src/runops_cores.c:146
#15 0x0807b5ed in runops_int (interpreter=0x82193d0, offset=0) at 
src/interpreter.c:833
#16 0x0807b68f in runops_ex (interpreter=0x82193d0, offset=0) at 
src/interpreter.c:863
#17 0x0807b854 in runops (interpreter=0x82193d0, offset=0) at 
src/interpreter.c:935

> leo
jens

Reply via email to