Version: (using KDE KDE 3.1.3) Installed from: Solaris Packages Compiler: SunProCC (Forte 7) : CC: Forte Developer 7 C++ 5.4 Patch 111715-09 2003/06/24 OS: Solaris Hi This bug has been reported several times, on different OS/Compiler combinations, but i believe this is the first time it's been reported on Solaris (SunOS 8) 32-bit. Engine::initArts() fails when trying to instantiate a Noatun::Session object: file kdemultimedia/noatun/library/engine.cpp: Arts::Object session = d->server.createObject("Noatun::Session"); if (d->session.isNull()) { kdWarning() << "Couldn't instanciate artsobject Noatun::Session. " // ... [snip] This bug also exists in KDE 3.1, 3.1.1 and 3.1.2, also on SunOS 5.8 with the same (Forte 7) compiler. It can be easily reproduced in the Solaris packages available for download at KDE. It has also been reproduced on SunOS 5.8 (Solaris 8) with gcc3 (gcc3.3,REV=2003.07.22) at blastwave.org. Incidentally, trying to instantiate an Arts::Synth_STEREO_COMPRESSOR (as seen in the test case enclosed below) also fails. Here is the stack trace output from running Noatun inside dbx: noatun: WARNING: Couldn't instanciate artsobject Noatun::Session. (This is normally caused by a broken package or compiling kdemultimedia in a --prefix different from arts. It may also be from two conflicting packages, so uninstall every arts/artsd package you have installed and try againe. t@1 (l@1) signal SEGV (no mapping at the fault address) in Engine::initArts at 0x7fa47cc4 0x7fa47cc4: initArts+0x21d4: ld [%o0], %l7 (dbx) where current thread: t@1 =>[1] Engine::initArts(0x1b7c20, 0x1b7ee8, 0x1, 0x0, 0x1b7e28, 0xffbec8f8), at 0x7fa47cc4 [2] Engine::Engine(0x15c, 0x0, 0x1b7c20, 0x800, 0x1b8260, 0x7faafe3c), at 0x7fa444e8 [3] Player::Player(0x800, 0x0, 0x1b7b80, 0x7fab3710, 0x0, 0x1b7c20), at 0x7fa51d94 [4] NoatunApp::NoatunApp(0xe00d8, 0x1b7b80, 0x0, 0x1, 0x2, 0x176778), at 0x7fa5995c [5] main(0x3, 0xffbece8c, 0x58efc, 0x58f04, 0x37144, 0x4fad0), at 0x37440 (dbx) This is probably not very useful, but it's the best i can get with optimized packages. :-) Please let me know if i can be of any help. I am enclosing a small test case which shows the exact same behavior. Thank you! --Stefan // ----- #include <iostream> #include <cstring> using namespace std; #include <noatun/engine.h> #include <noatun/equalizer.h> #include <noatun/player.h> #include <noatun/plugin.h> #include <noatun/effects.h> // #include <string.h> #include <kmessagebox.h> #include <klocale.h> #include <kstandarddirs.h> #include <kconfig.h> #include <kdebug.h> #include <qfile.h> #include <qdir.h> #include <sys/wait.h> #include <kplayobject.h> #include <kplayobjectfactory.h> #include <dynamicrequest.h> #include <arts/soundserver.h> #include <arts/stdsynthmodule.h> #include <arts/dispatcher.h> #include <arts/artsmodules.h> #include <kmedia2.h> #include <flowsystem.h> #include <noatunarts.h> #include <connect.h> // #include <cpuinfo.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main (int argc, char* argv[]) { Arts::Dispatcher dispatcher; Arts::SoundServerV2 server; Arts::Synth_AMAN_PLAY amanPlay; Arts::Synth_STEREO_COMPRESSOR stereoCompressor; Noatun::StereoEffectStack globalEffectStack; Noatun::StereoEffectStack effectsStack; Noatun::StereoEffectStack visStack; Noatun::Equalizer equalizer; Noatun::Session session; cerr << "Trying Arts::Reference(global:Arts_SoundServerV2)" << endl; server = Arts::Reference("global:Arts_SoundServerV2"); if ((server.isNull()) || (server.error())) { cerr << "Error in Arts::Reference(global:Arts_SoundServerV2)" << endl; return (-1); } cerr << "server = Arts::Reference(global:Arts_SoundServerV2) OK!" << endl; cerr << "Trying Arts::Synth_AMAN_PLAY" << endl; amanPlay = Arts::DynamicCast(server.createObject("Arts::Synth_AMAN_PLAY")); if (amanPlay.isNull()) { cerr << "Error: Arts::Synth_AMAN_PLAY is NULL" << endl; } cerr << "Arts::Synth_AMAN_PLAY OK!" << endl; cerr << "Trying Arts::Synth_STEREO_COMPRESSOR" << endl; stereoCompressor = Arts::DynamicCast (server.createObject("Arts::Synth_STEREO_COMPRESSOR")); if (stereoCompressor.isNull()) { cerr << "Arts::Synth_STEREO_COMPRESSOR is NULL" << endl; } else cerr << "Arts::Synth_STEREO_COMPRESSOR OK!" << endl; cerr << "Trying Noatun::Session" << endl; session = Arts::DynamicCast (server.createObject("Noatun::Session")); if (session.isNull()) { cerr << "Error: Noatun::Session is NULL" << endl; } else cerr << "Noatun::Session OK!" << endl; amanPlay.title("noatun"); amanPlay.autoRestoreID("noatun"); amanPlay.start(); globalEffectStack = Arts::DynamicCast(server.createObject("Noatun::StereoEffectStack")); globalEffectStack.start(); Arts::connect(globalEffectStack, amanPlay); effectsStack = Arts::DynamicCast(server.createObject("Noatun::StereoEffectStack")); return (0); } // -----
The bug is actually in arts/mcop/trader_impl.cc. --Stefan
If it's an arts bug I'll hand this over to arts although I think this was solved some time ago.
Arts is no longer developed and has been unmaintained for quite some time - more than 2 years. With phonon as the replacement for arts in KDE4, we're closing out all the arts bugs in Bugzilla since there is no chance of them being fixed. Thanks