むとうです。

五十嵐さん、0.26の方はよろしくお願いします。

On Sun, 22 Jul 2001 07:08:04 +0900 "[ruby-ext:01871] Re: ItemFactory-patch"
dellin <dellin_geo / geocities.co.jp> wrote:

> dellinです。
> 
> パッチの方はよろしくおねがいします。
> 
> で、
> > ところで、[ruby-ext:01805] の件は、今も起こるのでしょうか?
> > こちらでは再現していません。
> 
> どうやら、[BUG]と表示されて落ちていたのが、GC::disableすると落ちなくなった
> ことから、GCまわりでのトラブルだとおもいます。
> 
> ただ、私にはどう解決していいかわからないもので…


最近、私が作っているruweexというツールで、おそらくGtk::ItemFactoryがらみであろうと
思われるところでSegmentation Faultが発生する現象が出てしまって困っています。
現在、短い再現スクリプトを作ろうとしているのですが、ちょっとまだできてません。

大体下の方に添付した感じになるのですが、たまに、以下のようなメッセージが出ます。

ruweex:2891:in `main': undefined method `call' for 160.643:Float (NoMethodError)
        from ruweex:2891
#2891行目はGtk.mainの行です。

rbgtkitemfactory.c内のitem_exec_callback_wrap()のiterがProcオブジェクト
以外のオブジェクト(あるいはそれ以外の壊れたメモリ領域)を指しているのかなぁ
今のところと考えています。

もしかしたら、類似事象かもしれませんね。

#一応、再現スクリプトができたらor解決策が見つかったら再度投稿します。

ruby --version
ruby 1.7.1 (2001-07-15) [i686-linux]

---------------------------
gdb ruby
GNU gdb 5.0
Copyright 2000 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-redhat-linux"...
(gdb) run ruweex
Starting program: /usr/bin/ruby ruweex

Program received signal SIGSEGV, Segmentation fault.
0x0809f516 in st_lookup (table=0x81220c0, 
    key=0x1721 <Address 0x1721 out of bounds>, value=0xbfffdef8) at st.c:255
255         hash_val = do_hash(key, table);
(gdb) bt
#0  0x0809f516 in st_lookup (table=0x81220c0, 
    key=0x1721 <Address 0x1721 out of bounds>, value=0xbfffdef8) at st.c:255
#1  0x0805111a in search_method (klass=1075819220, id=5921, origin=0xbfffdf24)
    at eval.c:250
#2  0x08051156 in rb_get_method_body (klassp=0xbfffdf70, idp=0xbfffdf54, 
    noexp=0xbfffdf58) at eval.c:268
#3  0x0805a2b4 in rb_call (klass=1075819220, recv=1075819300, mid=5921, 
    argc=1, argv=0xbfffdf90, scope=1) at eval.c:4615
#4  0x0805a5e1 in rb_funcall (recv=1075819300, mid=5921, n=1) at eval.c:4712
#5  0x4025f61a in item_exec_callback_wrap (p_item=0x81c3670, ifact=1075819460, 
    iter=1075819300) at rbgtkitemfactory.c:84
#6  0x4040ef64 in gtk_item_factory_callback_marshal ()
   from /usr/lib/libgtk-1.2.so.0
#7  0x404202b1 in gtk_marshal_NONE__NONE () from /usr/lib/libgtk-1.2.so.0
#8  0x40453916 in gtk_handlers_run () from /usr/lib/libgtk-1.2.so.0
#9  0x40452c3d in gtk_signal_real_emit () from /usr/lib/libgtk-1.2.so.0
#10 0x404509f5 in gtk_signal_emit () from /usr/lib/libgtk-1.2.so.0
#11 0x4048b230 in gtk_widget_activate () from /usr/lib/libgtk-1.2.so.0
#12 0x404290e9 in gtk_menu_shell_activate_item () from /usr/lib/libgtk-1.2.so.0
#13 0x40428242 in gtk_menu_shell_button_release ()
   from /usr/lib/libgtk-1.2.so.0
#14 0x4041ffbc in gtk_marshal_BOOL__POINTER () from /usr/lib/libgtk-1.2.so.0
#15 0x40452c7d in gtk_signal_real_emit () from /usr/lib/libgtk-1.2.so.0
#16 0x404509f5 in gtk_signal_emit () from /usr/lib/libgtk-1.2.so.0
#17 0x4048b0e9 in gtk_widget_event () from /usr/lib/libgtk-1.2.so.0
#18 0x4041ff15 in gtk_propagate_event () from /usr/lib/libgtk-1.2.so.0
#19 0x4041ef3f in gtk_main_do_event () from /usr/lib/libgtk-1.2.so.0
#20 0x404d6e4f in gdk_event_dispatch () from /usr/lib/libgdk-1.2.so.0
#21 0x405097f3 in g_main_dispatch () from /usr/lib/libglib-1.2.so.0
#22 0x40509dd9 in g_main_iterate () from /usr/lib/libglib-1.2.so.0
#23 0x40509f8c in g_main_run () from /usr/lib/libglib-1.2.so.0
#24 0x4041e803 in gtk_main () from /usr/lib/libgtk-1.2.so.0
#25 0x4025e69a in gtk_m_main (self=1075988740) at rbgtkmain.c:27
#26 0x0805985b in call_cfunc (func=0x4025e684 <gtk_m_main>, recv=1075988740, 
    len=0, argc=0, argv=0x0) at eval.c:4294
#27 0x08059c11 in rb_call0 (klass=1075987800, recv=1075988740, id=5801, 
    argc=0, argv=0x0, body=0x4022433c, nosuper=1) at eval.c:4421
#28 0x0805a3bd in rb_call (klass=1075987800, recv=1075988740, mid=5801, 
    argc=0, argv=0x0, scope=0) at eval.c:4638
#29 0x08055a54 in rb_eval (self=1075673936, n=0x4021f274) at eval.c:2620
#30 0x08054179 in rb_eval (self=1075673936, n=0x401c9e9c) at eval.c:2095
#31 0x08052455 in ruby_run () at eval.c:1200
#32 0x08050e0f in main (argc=2, argv=0xbffff7b4, envp=0xbffff7c0) at main.c:50
#33 0x40099e5e in __libc_start_main (main=0x8050df0 <main>, argc=2, 
    ubp_av=0xbffff7b4, init=0x805029c <_init>, fini=0x80b71b0 <_fini>, 
    rtld_fini=0x4000d3c4 <_dl_fini>, stack_end=0xbffff7ac)
    at ../sysdeps/generic/libc-start.c:129
(gdb) 
(gdb) 
(gdb) 

----
○● むとう まさお(MUTOH Masao)    
●○ E-Mail:mutoh / highway.ne.jp