[Kde-bindings] in korundum 4.5, calling super from event handlers causes SystemStackError

Stefano Crocco stefano.crocco at alice.it
Mon Jul 5 12:16:58 UTC 2010


On Monday 05 July 2010, Arno Rehn wrote:
> |Hm, I can't reproduce that, using recent trunk. I've made some fixes to
> |QtRuby  in the last few days that should appear in RC2, but nothing of
> |what I've done seems to be related to this.
> |
> |Is there anything like a full backtrace? And which Ruby version are you
> |using?

I'm using ruby 1.9.1p376. The exact exception I get is the following:

/usr/lib/ruby19/site_ruby/1.9.1/Qt/qtruby4.rb:2636:in `find_class': stack 
level too deep (SystemStackError)
        from prova.rb:8:in `method_missing'
        from prova.rb:8:in `contextMenuEvent'
        from prova.rb:8:in `method_missing'
        from prova.rb:8:in `contextMenuEvent'
        from prova.rb:8:in `method_missing'
        from prova.rb:8:in `contextMenuEvent'
        from prova.rb:8:in `method_missing'
        from prova.rb:8:in `contextMenuEvent'
         ... 5803 levels...
        from prova.rb:8:in `contextMenuEvent'
        from /usr/lib/ruby19/site_ruby/1.9.1/Qt/qtruby4.rb:469:in 
`method_missing'
        from /usr/lib/ruby19/site_ruby/1.9.1/Qt/qtruby4.rb:469:in `exec'
        from prova.rb:16:in `<main>'

To obtain this, however, I needed to add $stdout.sync=true at the top of the 
file, otherwise I would get no output (but the program still froze). Sorry if 
I didn't mention it in my other mail, but I was running the script from an IDE 
and I got the backtrace without needing it.

The attachment contains the backtrace I get from gdb if I run ruby through it 
(note that I had to truncate it because it went on for a very long time: it 
reached about 12 thousand lines before I decided to stop it).

I'll try to compile korundum and smoke from the 4.5 branch as soon as I can to 
see if maybe the problem is fixed (I'm compiling openoffice at the moment, 
though, so I think I'll have to wait a few hours to to that).

Stefano
-------------- next part --------------
#0  0xb669e0a5 in method_missing (argc=2, argv=0xbf800240, self=137899468) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/Qt.cpp:760
#1  0xb7f7127d in call_cfunc (func=0xb669e099 <method_missing(int, unsigned long*, unsigned long)>, recv=137899468, len=-1, argc=2, argv=0xbf800240) at vm_insnhelper.c:286
#2  0xb7f7bdfa in vm_call0 (th=0x804bad0, klass=137409412, recv=137899468, id=392, oid=392, argc=2, argv=0xbf800240, body=0x830b138, nosuper=0) at vm_eval.c:71
#3  0xb7f7c1b9 in rb_call0 (recv=137899468, mid=392, argc=2, argv=0xbf800240) at vm_eval.c:249
#4  rb_call (recv=137899468, mid=392, argc=2, argv=0xbf800240) at vm_eval.c:255
#5  rb_funcall2 (recv=137899468, mid=392, argc=2, argv=0xbf800240) at vm_eval.c:433
#6  0xb7f7c3aa in vm_method_missing (th=0x804bad0, id=<value optimized out>, recv=137899468, num=1, blockptr=0x0, opt=32) at vm_insnhelper.c:434
#7  0xb7f7c72b in vm_call_method (th=<value optimized out>, cfp=0xb7a20af8, num=1, blockptr=0x0, flag=<value optimized out>, id=3086422637, mn=0x0, recv=137899468) at vm_insnhelper.c:612
#8  0xb7f77149 in vm_exec_core (th=<value optimized out>, initial=<value optimized out>) at insns.def:1026
#9  0xb7f79b83 in vm_exec (th=<value optimized out>) at vm.c:1080
#10 0xb7f7bd33 in vm_call0 (th=0x804bad0, klass=<value optimized out>, recv=137899468, id=11816, oid=11816, argc=1, argv=0xbf800730, body=0x838376c, nosuper=0) at vm_eval.c:57
#11 0xb7f7c1b9 in rb_call0 (recv=137899468, mid=11816, argc=1, argv=0xbf800730) at vm_eval.c:249
#12 rb_call (recv=137899468, mid=11816, argc=1, argv=0xbf800730) at vm_eval.c:255
#13 rb_funcall2 (recv=137899468, mid=11816, argc=1, argv=0xbf800730) at vm_eval.c:433
#14 0xb66d1fbd in QtRuby::VirtualMethodCall::callMethod (this=0xbf800774) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:523
#15 0xb66d0b04 in QtRuby::MethodCallBase::next (this=0xbf800774) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:466
#16 0xb669d3ba in QtRuby::Binding::callMethod (this=0xb7e5c478, method=15568, ptr=0x83df450, args=0xbf8007e0)
    at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/Qt.cpp:277
#17 0xb69eb281 in __smokeqtgui::x_QPushButton::contextMenuEvent (this=0x83df450, x1=0xbfffdabc) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_13.cpp:4858
#18 0xb6a3c61a in __smokeqtgui::x_QWidget::x_267 (xi=<value optimized out>, obj=0x2, args=0x856eb90) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_20.cpp:11588
#19 __smokeqtgui::xcall_QWidget (xi=<value optimized out>, obj=0x2, args=0x856eb90) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_20.cpp:12564
#20 0xb66d3208 in QtRuby::MethodCall::callMethod (this=0xbf800b1c) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.h:148
#21 0xb66d0b04 in QtRuby::MethodCallBase::next (this=0xbf800b1c) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:466
#22 0xb669e476 in method_missing (argc=2, argv=0xbf800d80, self=137899468) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/Qt.cpp:910
#23 0xb7f7127d in call_cfunc (func=0xb669e099 <method_missing(int, unsigned long*, unsigned long)>, recv=137899468, len=-1, argc=2, argv=0xbf800d80) at vm_insnhelper.c:286
#24 0xb7f7bdfa in vm_call0 (th=0x804bad0, klass=137409412, recv=137899468, id=392, oid=392, argc=2, argv=0xbf800d80, body=0x830b138, nosuper=0) at vm_eval.c:71
#25 0xb7f7c1b9 in rb_call0 (recv=137899468, mid=392, argc=2, argv=0xbf800d80) at vm_eval.c:249
#26 rb_call (recv=137899468, mid=392, argc=2, argv=0xbf800d80) at vm_eval.c:255
#27 rb_funcall2 (recv=137899468, mid=392, argc=2, argv=0xbf800d80) at vm_eval.c:433
#28 0xb7f7c3aa in vm_method_missing (th=0x804bad0, id=<value optimized out>, recv=137899468, num=1, blockptr=0x0, opt=32) at vm_insnhelper.c:434
#29 0xb7f7c72b in vm_call_method (th=<value optimized out>, cfp=0xb7a20b88, num=1, blockptr=0x0, flag=<value optimized out>, id=3086422637, mn=0x0, recv=137899468) at vm_insnhelper.c:612
#30 0xb7f77149 in vm_exec_core (th=<value optimized out>, initial=<value optimized out>) at insns.def:1026
#31 0xb7f79b83 in vm_exec (th=<value optimized out>) at vm.c:1080
#32 0xb7f7bd33 in vm_call0 (th=0x804bad0, klass=<value optimized out>, recv=137899468, id=11816, oid=11816, argc=1, argv=0xbf801270, body=0x838376c, nosuper=0) at vm_eval.c:57
#33 0xb7f7c1b9 in rb_call0 (recv=137899468, mid=11816, argc=1, argv=0xbf801270) at vm_eval.c:249
#34 rb_call (recv=137899468, mid=11816, argc=1, argv=0xbf801270) at vm_eval.c:255
#35 rb_funcall2 (recv=137899468, mid=11816, argc=1, argv=0xbf801270) at vm_eval.c:433
#36 0xb66d1fbd in QtRuby::VirtualMethodCall::callMethod (this=0xbf8012b4) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:523
#37 0xb66d0b04 in QtRuby::MethodCallBase::next (this=0xbf8012b4) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:466
#38 0xb669d3ba in QtRuby::Binding::callMethod (this=0xb7e5c478, method=15568, ptr=0x83df450, args=0xbf801320)
    at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/Qt.cpp:277
#39 0xb69eb281 in __smokeqtgui::x_QPushButton::contextMenuEvent (this=0x83df450, x1=0xbfffdabc) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_13.cpp:4858
#40 0xb6a3c61a in __smokeqtgui::x_QWidget::x_267 (xi=<value optimized out>, obj=0x2, args=0x856eb00) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_20.cpp:11588
#41 __smokeqtgui::xcall_QWidget (xi=<value optimized out>, obj=0x2, args=0x856eb00) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_20.cpp:12564
#42 0xb66d3208 in QtRuby::MethodCall::callMethod (this=0xbf80165c) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.h:148
#43 0xb66d0b04 in QtRuby::MethodCallBase::next (this=0xbf80165c) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:466
#44 0xb669e476 in method_missing (argc=2, argv=0xbf8018c0, self=137899468) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/Qt.cpp:910
#45 0xb7f7127d in call_cfunc (func=0xb669e099 <method_missing(int, unsigned long*, unsigned long)>, recv=137899468, len=-1, argc=2, argv=0xbf8018c0) at vm_insnhelper.c:286
#46 0xb7f7bdfa in vm_call0 (th=0x804bad0, klass=137409412, recv=137899468, id=392, oid=392, argc=2, argv=0xbf8018c0, body=0x830b138, nosuper=0) at vm_eval.c:71
#47 0xb7f7c1b9 in rb_call0 (recv=137899468, mid=392, argc=2, argv=0xbf8018c0) at vm_eval.c:249
#48 rb_call (recv=137899468, mid=392, argc=2, argv=0xbf8018c0) at vm_eval.c:255
#49 rb_funcall2 (recv=137899468, mid=392, argc=2, argv=0xbf8018c0) at vm_eval.c:433
#50 0xb7f7c3aa in vm_method_missing (th=0x804bad0, id=<value optimized out>, recv=137899468, num=1, blockptr=0x0, opt=32) at vm_insnhelper.c:434
---Type <return> to continue, or q <return> to quit---
#51 0xb7f7c72b in vm_call_method (th=<value optimized out>, cfp=0xb7a20c18, num=1, blockptr=0x0, flag=<value optimized out>, id=3086422637, mn=0x0, recv=137899468) at vm_insnhelper.c:612
#52 0xb7f77149 in vm_exec_core (th=<value optimized out>, initial=<value optimized out>) at insns.def:1026
#53 0xb7f79b83 in vm_exec (th=<value optimized out>) at vm.c:1080
#54 0xb7f7bd33 in vm_call0 (th=0x804bad0, klass=<value optimized out>, recv=137899468, id=11816, oid=11816, argc=1, argv=0xbf801db0, body=0x838376c, nosuper=0) at vm_eval.c:57
#55 0xb7f7c1b9 in rb_call0 (recv=137899468, mid=11816, argc=1, argv=0xbf801db0) at vm_eval.c:249
#56 rb_call (recv=137899468, mid=11816, argc=1, argv=0xbf801db0) at vm_eval.c:255
#57 rb_funcall2 (recv=137899468, mid=11816, argc=1, argv=0xbf801db0) at vm_eval.c:433
#58 0xb66d1fbd in QtRuby::VirtualMethodCall::callMethod (this=0xbf801df4) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:523
#59 0xb66d0b04 in QtRuby::MethodCallBase::next (this=0xbf801df4) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:466
#60 0xb669d3ba in QtRuby::Binding::callMethod (this=0xb7e5c478, method=15568, ptr=0x83df450, args=0xbf801e60)
    at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/Qt.cpp:277
#61 0xb69eb281 in __smokeqtgui::x_QPushButton::contextMenuEvent (this=0x83df450, x1=0xbfffdabc) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_13.cpp:4858
#62 0xb6a3c61a in __smokeqtgui::x_QWidget::x_267 (xi=<value optimized out>, obj=0x2, args=0x856ea70) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_20.cpp:11588
#63 __smokeqtgui::xcall_QWidget (xi=<value optimized out>, obj=0x2, args=0x856ea70) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_20.cpp:12564
#64 0xb66d3208 in QtRuby::MethodCall::callMethod (this=0xbf80219c) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.h:148
#65 0xb66d0b04 in QtRuby::MethodCallBase::next (this=0xbf80219c) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:466
#66 0xb669e476 in method_missing (argc=2, argv=0xbf802400, self=137899468) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/Qt.cpp:910
#67 0xb7f7127d in call_cfunc (func=0xb669e099 <method_missing(int, unsigned long*, unsigned long)>, recv=137899468, len=-1, argc=2, argv=0xbf802400) at vm_insnhelper.c:286
#68 0xb7f7bdfa in vm_call0 (th=0x804bad0, klass=137409412, recv=137899468, id=392, oid=392, argc=2, argv=0xbf802400, body=0x830b138, nosuper=0) at vm_eval.c:71
#69 0xb7f7c1b9 in rb_call0 (recv=137899468, mid=392, argc=2, argv=0xbf802400) at vm_eval.c:249
#70 rb_call (recv=137899468, mid=392, argc=2, argv=0xbf802400) at vm_eval.c:255
#71 rb_funcall2 (recv=137899468, mid=392, argc=2, argv=0xbf802400) at vm_eval.c:433
#72 0xb7f7c3aa in vm_method_missing (th=0x804bad0, id=<value optimized out>, recv=137899468, num=1, blockptr=0x0, opt=32) at vm_insnhelper.c:434
#73 0xb7f7c72b in vm_call_method (th=<value optimized out>, cfp=0xb7a20ca8, num=1, blockptr=0x0, flag=<value optimized out>, id=3086422637, mn=0x0, recv=137899468) at vm_insnhelper.c:612
#74 0xb7f77149 in vm_exec_core (th=<value optimized out>, initial=<value optimized out>) at insns.def:1026
#75 0xb7f79b83 in vm_exec (th=<value optimized out>) at vm.c:1080
#76 0xb7f7bd33 in vm_call0 (th=0x804bad0, klass=<value optimized out>, recv=137899468, id=11816, oid=11816, argc=1, argv=0xbf8028f0, body=0x838376c, nosuper=0) at vm_eval.c:57
#77 0xb7f7c1b9 in rb_call0 (recv=137899468, mid=11816, argc=1, argv=0xbf8028f0) at vm_eval.c:249
#78 rb_call (recv=137899468, mid=11816, argc=1, argv=0xbf8028f0) at vm_eval.c:255
#79 rb_funcall2 (recv=137899468, mid=11816, argc=1, argv=0xbf8028f0) at vm_eval.c:433
#80 0xb66d1fbd in QtRuby::VirtualMethodCall::callMethod (this=0xbf802934) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:523
#81 0xb66d0b04 in QtRuby::MethodCallBase::next (this=0xbf802934) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:466
#82 0xb669d3ba in QtRuby::Binding::callMethod (this=0xb7e5c478, method=15568, ptr=0x83df450, args=0xbf8029a0)
    at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/Qt.cpp:277
#83 0xb69eb281 in __smokeqtgui::x_QPushButton::contextMenuEvent (this=0x83df450, x1=0xbfffdabc) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_13.cpp:4858
#84 0xb6a3c61a in __smokeqtgui::x_QWidget::x_267 (xi=<value optimized out>, obj=0x2, args=0x856e9e0) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_20.cpp:11588
#85 __smokeqtgui::xcall_QWidget (xi=<value optimized out>, obj=0x2, args=0x856e9e0) at /var/tmp/paludis/kde-base-smoke-4.4.90/work/smoke-4.4.90_build/smoke/qtgui/x_20.cpp:12564
#86 0xb66d3208 in QtRuby::MethodCall::callMethod (this=0xbf802cdc) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.h:148
#87 0xb66d0b04 in QtRuby::MethodCallBase::next (this=0xbf802cdc) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/marshall_types.cpp:466
#88 0xb669e476 in method_missing (argc=2, argv=0xbf802f40, self=137899468) at /var/tmp/paludis/kde-base-kdebindings-ruby-4.4.90/work/ruby19/kdebindings-ruby-4.4.90/ruby/qtruby/src/Qt.cpp:910
#89 0xb7f7127d in call_cfunc (func=0xb669e099 <method_missing(int, unsigned long*, unsigned long)>, recv=137899468, len=-1, argc=2, argv=0xbf802f40) at vm_insnhelper.c:286
#90 0xb7f7bdfa in vm_call0 (th=0x804bad0, klass=137409412, recv=137899468, id=392, oid=392, argc=2, argv=0xbf802f40, body=0x830b138, nosuper=0) at vm_eval.c:71
#91 0xb7f7c1b9 in rb_call0 (recv=137899468, mid=392, argc=2, argv=0xbf802f40) at vm_eval.c:249
#92 rb_call (recv=137899468, mid=392, argc=2, argv=0xbf802f40) at vm_eval.c:255
#93 rb_funcall2 (recv=137899468, mid=392, argc=2, argv=0xbf802f40) at vm_eval.c:433
#94 0xb7f7c3aa in vm_method_missing (th=0x804bad0, id=<value optimized out>, recv=137899468, num=1, blockptr=0x0, opt=32) at vm_insnhelper.c:434
#95 0xb7f7c72b in vm_call_method (th=<value optimized out>, cfp=0xb7a20d38, num=1, blockptr=0x0, flag=<value optimized out>, id=3086422637, mn=0x0, recv=137899468) at vm_insnhelper.c:612
#96 0xb7f77149 in vm_exec_core (th=<value optimized out>, initial=<value optimized out>) at insns.def:1026
#97 0xb7f79b83 in vm_exec (th=<value optimized out>) at vm.c:1080
#98 0xb7f7bd33 in vm_call0 (th=0x804bad0, klass=<value optimized out>, recv=137899468, id=11816, oid=11816, argc=1, argv=0xbf803430, body=0x838376c, nosuper=0) at vm_eval.c:57
#99 0xb7f7c1b9 in rb_call0 (recv=137899468, mid=11816, argc=1, argv=0xbf803430) at vm_eval.c:249
#100 rb_call (recv=137899468, mid=11816, argc=1, argv=0xbf803430) at vm_eval.c:255
#101 rb_funcall2 (recv=137899468, mid=11816, argc=1, argv=0xbf803430) at vm_eval.c:433


More information about the Kde-bindings mailing list