[Kde-bindings] Method missing loop.

Han Holl han.holl at pobox.com
Thu Jul 5 20:12:44 UTC 2007


Hi,

I got a (hobby) application that displays a collection of photographs on the 
root window.
It has run for some time under Fedora Core 6, but after upgrading to Fedora 7 
it stoppend working.

At first, it stopped after doing about 5 to 10 photo's (without _any_ message 
whatsoever -- just stopped !) , but now, probably after the upgrade to kde 
3.5.7 it stops at the first photo.

I got some warnings, sometimes an infinitely long kde traceback (the capture 
wouldn't finish), and one time a ruby stack overflow.

Anyway, the following patch:
--- korundum.rb.orig    2007-07-05 21:00:45.000000000 +0200
+++ korundum.rb 2007-07-05 20:54:07.000000000 +0200
@@ -188,6 +188,10 @@
        end

        class DCOPRef < Qt::Base
+               def initialize(*args)
+                       super
+                       @functions = nil
+               end
                def method_missing(*k)
                        # Enables DCOPRef calls to be made like this:
                        #
@@ -211,7 +215,7 @@

                                # Get the functions() for this dcop ref and
                                # cache method_name => full_type_signature in 
a hash
-                               if !defined(@functions) || @functions.nil?
+                               if @functions.nil?
                                        @functions = {}
                                        funcs = call("functions()")
                                        if funcs.nil?
solved the problem somewhat: it would seem that somehow  !defined(@functions) 
triggered method_missing and so on recursively.

Why this would happen, I have no idea.(Maybe it's a symptom of something else 
gone wrong.)

I'm now back at the situation that I had _just_ after the upgrade: it will 
display some photo's and then stop. No message, no backtrace, no nothing.
I've tried tracing and various debugging settings like
Qt::Internal::setDebug Qt::QtDebugChannel::QTDB_VIRTUAL
Qt.debug_level = Qt::DebugLevel::High
Qt::Internal::setDebug Qt::QtDebugChannel::QTDB_GC
but nothing sheds any light on the sudden death

Any suggestion what I could try next?
(I still have a 'working' application if I do: while :; do kdepaper.rb; done
but it doesn't look nice)

Cheers

Han Holl




More information about the Kde-bindings mailing list