Bug 66087

Summary: Engine::initArts(): Could not instantiate artsobject Noatun::Session.
Product: [Unmaintained] arts Reporter: Stefan Teleman <stefan.teleman>
Component: generalAssignee: Multimedia Developers <kde-multimedia>
Status: CLOSED UNMAINTAINED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Solaris Packages   
OS: Solaris   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Stefan Teleman 2003-10-16 02:32:40 UTC
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);
}

// -----
Comment 1 Stefan Teleman 2003-10-21 07:40:29 UTC
The bug is actually in arts/mcop/trader_impl.cc.

--Stefan
Comment 2 Stefan Gehn 2003-11-16 13:29:18 UTC
If it's an arts bug I'll hand this over to arts although I think this was solved some time ago.
Comment 3 Matt Rogers 2008-11-19 23:37:14 UTC
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