>>>>> "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?

 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