Summary: | Assertion in KCmdLineArgs failing | ||
---|---|---|---|
Product: | [Applications] amarok | Reporter: | Mikal Krogstad <s0ppelb0tte> |
Component: | general | Assignee: | Unassigned bugs mailing-list <unassigned-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | arendjr, bastian, raimund |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Mikal Krogstad
2004-08-08 05:08:01 UTC
This is exactly the same as the other bug, and I don't know why that one was closed. It happens when KDElibs is compiled with debug enabled. Your distro should consider making the package --disable-debug as libs is affected by debug quite significantly. However I gotta bring this up with maintainer. Will get back to you. Why not simply reassign to waldo? I get this problem starting OpenOffice too (SuSE's version, KDE3.3 binaries from SuSE): degerrit@sputnik:~/Desktop> /usr/X11R6/bin/OOo-impress --messages-in-window ./Verkiez.pps soffice.bin: kdecore/kcmdlineargs.cpp:159: static void KCmdLineArgs::init(int, char**, const KAboutData*, bool): Assertion `argsList == 0' failed. Aborted kdebase3-3.3.0-8 kdelibs3-3.3.0-10 OpenOffice_org-1.1.1-23.4 Binaries from: http://ftp.belnet.be/mirror/ftp.suse.com/suse/i386/supplementary/KDE/update_for_9.1/base/ The problem must be KDE since I downgraded OpenOffice to a version which worked before, and the error still occurs. Waldo, could you please take a look at this? We believe this is a bug in KCmdLineArgs, as the assert prevents re-initialization of the class in debug mode, which is a problem for many KDE users. *** Bug 88910 has been marked as a duplicate of this bug. *** *** Bug 88872 has been marked as a duplicate of this bug. *** Application bug, KCmdLineArgs::init should only be called once. Hmm, maybe something in SuSE's kdelibs? The problem has gone away, here's the same list of binary rpms: kdebase3-3.3.0-8 kdelibs3-3.3.0-22 OpenOffice_org-1.1.1-23.4 This is a limitation of KCmdLineArgs then. It is fine for use apart from when you want to do things in a better way than other KDE applications. KUniqueApplication uses the operator<<() to "re-initialise" the object. I spose we have to figure out how to use this cryptic system. KCmdLineArgs is a fairly nice class but I would prefer if its use wasn't compulsary for KDE applications. Max: what are you trying to do then? Waldo, hi, sorry for my rash comment. amaroK uses a two-binary approach so that command line arguments can be communicated instantly (negating the link time for the bigger amaroK binary), which for operations like seek and pause is a must. So we pass the arguments from the quick loading binary to the running amarok via a unix-socket. And then we need to get those arguments into the KCmdLineArg object, so currently we just do this: KCmdLineArgs::reset(); KCmdLineArgs::init( argc, argv, &aboutData ) This works provided libs were compiled --disable-debug. With debug, the ASSERTS in KCmdLineArgs::init() cause amaroK to abort. Do you suggest we use operator<<() like KUniqueApplication? This is ok with me, of course, it just looked like a less pleasant route. Thanks for your time! :) CVS commit by waba: Allow init to be called more than once CCMAIL: 86776-done@bugs.kde.org M +0 -4 kcmdlineargs.cpp 1.91.2.1 --- kdelibs/kdecore/kcmdlineargs.cpp #1.91:1.91.2.1 @@ -157,8 +157,4 @@ void KCmdLineArgs::init(int _argc, char **_argv, const KAboutData *_about, bool noKApp) { - assert( argsList == 0 ); // Don't call init twice. - assert( argc == 0 ); // Don't call init twice. - assert( argv == 0 ); // Don't call init twice. - assert( about == 0 ); // Don't call init twice. argc = _argc; argv = _argv; Waldo, we love you! :) |