From: ts Date: 2005-10-13T20:10:04+09:00 Subject: Re: ruby 1.8.3 (2005-09-21) [i486-linux] sisu segfault >>>>> "n" == nobuyoshi nakada 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? Another way to see it moulon% ruby $HOME/local/r18/bin/sisu rb_parser_malloc size 2403 YYSTYPE 4 file /home/msys/decoux/local/r18/lib/ruby/1.8/date/format.rb line 554 rb_parser_malloc size 2403 YYSTYPE 4 file /home/msys/decoux/local/r18/lib/ruby/site_ruby/1.8/sisu/0.27/param.rb line 117 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% see the value 2403 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) YYSTACK_GAP_MAXIMUM is precisely 3 moulon% gdb ruby GNU gdb 6.3-debian Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-linux"...Using host libthread_db library "/lib/tls/libthread_db.so.1". (gdb) set li 32 (gdb) b rb_parser_malloc Breakpoint 1 at 0x8089967: file parse.y, line 6126. (gdb) r $HOME/local/r18/bin/sisu Starting program: /i/home/msys/decoux/ruby/cvs/ruby/ruby $HOME/local/r18/bin/sisu Breakpoint 1, rb_parser_malloc (size=2403) at parse.y:6126 6126 NODE *n = NEWHEAP(HEAPCNT(1, size)); (gdb) up #1 0x0808ce33 in ruby_yyparse () at parse.c:3845 3845 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); (gdb) Guy Decoux