Bug 113994 - Ruby/Korundum programs crash when receiving a DCOP signal.
Summary: Ruby/Korundum programs crash when receiving a DCOP signal.
Status: RESOLVED NOT A BUG
Alias: None
Product: bindings
Classification: Developer tools
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: kde-bindings
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-10-07 04:44 UTC by Michael Pyne
Modified: 2005-10-07 22:20 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Pyne 2005-10-07 04:44:06 UTC
Version:            (using KDE Devel)
Installed from:    Compiled sources
Compiler:          gcc 4.0.1 (Gentoo 4.0.1, pie-8.7.8)
OS:                Linux

Korundum scripts that use connectDCOPSignal() to listen for DCOP signals crash when the signal is emitted, with the following message (as tested with the example applications dcopsignal.rb and dcopslot.rb):

kde-cvs@broadway ~/kdesvn/build/kdebindings/korundum/rubylib/examples/dcop $ /usr/lib/ruby/site_ruby/1.8/Qt/qtruby.rb:1063:in `method_missing': Cannot handle 'const QByteArray&' as argument of virtual method DCOPObject::process (ArgumentError)
        from /usr/lib/ruby/site_ruby/1.8/Qt/qtruby.rb:1063:in `exec'
        from /usr/lib/ruby/site_ruby/1.8/KDE/korundum.rb:408:in `exec'
        from ./dcopslot.rb:88
Mutex destroy failure: Device or resource busy

This happens with every script I use that connects to DCOP signals.  In fact, I first noticed when re-testing a script you can find here (http://grammarian.homelinux.net/~kde-cvs/showPlaying-signals.rb), which can be used in conjunction with KDE 3.5's JuK application, which gives the following error:

kde-cvs@broadway ~/kdesvn/build/kdebindings $ ~/public_html/showPlaying-signals.rb
/usr/lib/ruby/site_ruby/1.8/Qt/qtruby.rb:1063:in `method_missing': Cannot handle 'const QByteArray&' as argument of virtual method DCOPObject::process (ArgumentError)
        from /usr/lib/ruby/site_ruby/1.8/Qt/qtruby.rb:1063:in `exec'
        from /usr/lib/ruby/site_ruby/1.8/KDE/korundum.rb:395:in `exec'
        from /home/kde-cvs/public_html/showPlaying-signals.rb:178
Mutex destroy failure: Device or resource busy

I just recently upgraded Ruby to 1.8.3.  I tried reinstalling qtruby and korundum but that didn't seem to help.  I will try downgrading Ruby back to 1.8.1 I suppose and see if that works, but I'm not sure when the behavior started to break as I haven't used the script in question in awhile.
Comment 1 Michael Pyne 2005-10-07 05:07:47 UTC
Gentoo only seems to go as far back as 1.8.2, but it seems to crash as well.
Comment 2 Richard Dale 2005-10-07 08:25:05 UTC
On Friday 07 October 2005 05:07, Michael Pyne wrote:
[bugs.kde.org quoted mail]
I made a recent change to how QByteArrays are marshalled. It involved changes 
to both Korundum and the code generation for the Smoke library. 

You need to update the kdebindings/kalyptus directory, and the 'make clean; 
make' in kdebindings/smoke/qt and kdebindings/smoke/kde, reinstall the Smoke 
libraries, and it should be ok

-- Richard
Comment 3 Caleb Tennis 2005-10-07 15:06:44 UTC
As an FYI, This code works for me (using Gentoo):

hello = MainWindow.new(nil)
app.mainWidget = hello

hello.connectDCOPSignal("gina","MessageHandlerBase","EStop(bool)","EStopSlot(bool)",false)
Comment 4 Michael Pyne 2005-10-07 22:20:07 UTC
Richard: Thanks, that worked.