Sorry for interruption. >I updated the patch to support environments sizeof(RVALUE) >is not multiples of 5, such as windows. >(pointed by kosako: http://d.hatena.ne.jp/kkos/20060228#1141128641) On VisualC++, this patch changes sizeof(RVALUE) to 20. Index: gc.c =================================================================== RCS file: /src/ruby/gc.c,v retrieving revision 1.233 diff -u -w -b -p -r1.233 gc.c --- gc.c 13 Feb 2006 04:53:21 -0000 1.233 +++ gc.c 2 Mar 2006 04:12:31 -0000 @@ -310,6 +310,8 @@ rb_global_variable(VALUE *var) rb_gc_register_address(var); } +#pragma pack(push, 1) + typedef struct RVALUE { union { struct { @@ -339,6 +341,8 @@ typedef struct RVALUE { #endif } RVALUE; +#pragma pack(pop) + static RVALUE *freelist = 0; static RVALUE *deferred_final_list = 0; ////////// Probably even this works on VisualC++, still should not depend on 20byte alignment though. Just for tips. :-)