>>>>> "n" == nobuyoshi nakada <nobuyoshi.nakada / ge.com> writes:

n> If the size is indivisible by sizeof(YYSTYPE), it shouldn't be
n> for the parser stack, I guessed.  This is wrong assumption?

 Well,

 rb_bug() called in fixpos()

moulon% ruby  $HOME/local/r18/bin/sisu
node 0xb7e2293c file /home/msys/decoux/local/r18/lib/ruby/site_ruby/1.8/sisu/0.27/param.rb line 302
/home/msys/decoux/local/r18/lib/ruby/site_ruby/1.8/sisu/0.27/param.rb:342: [BUG] orig 0xb7e2293c
ruby 1.8.3 (2005-10-12) [i686-linux]

Aborted
moulon% 

 and with the debugger


Breakpoint 2, rb_node_newnode (type=75776, a0=136813313, a1=136813313, a2=136813313) at parse.y:4478
4478		fprintf(stderr, "node 0x%x file %s line %d\n", n,ruby_sourcefile,
(gdb) n
node 0xb7e2293c file /home/msys/decoux/local/r18/lib/ruby/site_ruby/1.8/sisu/0.27/param.rb line 302
4481	    n->u1.value = a0;
(gdb) b rb_gc_mark_parser
Breakpoint 3 at 0x808a586: file parse.y, line 5766.
(gdb) c
Continuing.

Breakpoint 3, rb_gc_mark_parser () at parse.y:5766
5766	    if (!ruby_in_compile) return;
(gdb) p *parser_heap
$1 = {flags = 61540415, 
  nd_file = 0x8279b01 "/home/msys/decoux/local/r18/lib/ruby/site_ruby/1.8/sisu/0.27/param.rb", u1 = {
    node = 0x82828f8, id = 136849656, value = 136849656, cfunc = 0x82828f8, tbl = 0x82828f8}, u2 = {
    node = 0x0, id = 0, argc = 0, value = 0}, u3 = {node = 0x0, id = 0, state = 0, entry = 0x0, cnt = 0, 
    value = 0}}
(gdb) 

 u3.cnt == 0 and the nodes are not marked

(gdb) c
Continuing.
/home/msys/decoux/local/r18/lib/ruby/site_ruby/1.8/sisu/0.27/param.rb:342: [BUG] orig 0xb7e2293c
ruby 1.8.3 (2005-10-12) [i686-linux]


Program received signal SIGABRT, Aborted.
0xb7e799e7 in raise () from /lib/tls/libc.so.6
(gdb) 
Continuing.
/home/msys/decoux/local/r18/lib/ruby/site_ruby/1.8/sisu/0.27/param.rb:342: [BUG] orig 0xb7e2293c
ruby 1.8.3 (2005-10-12) [i686-linux]

(gdb)


Guy Decoux