README.EXT.jp に以下の記述があります.

>Dataオブジェクトを生成して構造体をRubyオブジェクトにカプセル
>化するためには,以下のマクロを使います.
>
>  Data_Wrap_Struct(class,mark,free,ptr)
>
>このマクロの戻り値は生成されたDataオブジェクトです.
>
>classはこのDataオブジェクトのクラスです.ptrはカプセル化する
>Cの構造体へのポインタです.markはこの構造体がRubyのオブジェ
>クトへの参照がある時に使う関数です.そのような参照を含まない
>時には0を指定します.
>
># そのような参照は勧められません.

さて,ruby-xlib で使っている構造体に

typedef struct st_gc {
   struct st_gc *next;
   GC     gc;
   VALUE  display;
   VALUE  window;
} t_gc;

というものがあります.VALUE 型のメンバを含んでいます.これは
「この構造体がRubyのオブジェクトへの参照がある時」にあたるの
でしょうか.

もしそうだとすると,ガーベージコレクトが行われた際に不具合が
出てしまうのでしょうね.

# 不可解な [BUG] が出たので.^^;

----
Kazuhiro Yoshida  moriq / ma2.seikyou.ne.jp