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