[Bug 66087] New: Engine::initArts(): Could not instantiate artsobject Noatun::Session.

Stefan Teleman steleman at nyc.rr.com
Thu Oct 16 01:32:44 BST 2003

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
           Summary: Engine::initArts(): Could not instantiate artsobject
           Product: noatun
           Version: unspecified
          Platform: Solaris Packages
        OS/Version: Solaris
            Status: UNCONFIRMED
          Severity: crash
          Priority: NOR
         Component: general
        AssignedTo: kde-multimedia at kde.org
        ReportedBy: steleman at nyc.rr.com

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


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 at 1 (l at 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 at 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

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!


// -----
#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>

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;
        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;
        cerr << "Noatun::Session OK!" << endl;

    globalEffectStack = Arts::DynamicCast(server.createObject("Noatun::StereoEffectStack"));
    Arts::connect(globalEffectStack, amanPlay);
    effectsStack = Arts::DynamicCast(server.createObject("Noatun::StereoEffectStack"));
    return (0);

// -----

More information about the kde-multimedia mailing list