Bug 169017 - dolphin warnings when opening files with kcachegrind
Summary: dolphin warnings when opening files with kcachegrind
Status: RESOLVED FIXED
Alias: None
Product: kcachegrind
Classification: Developer tools
Component: general (show other bugs)
Version: unspecified
Platform: Fedora RPMs Linux
: NOR normal
Target Milestone: ---
Assignee: Josef Weidendorfer
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-08-13 07:01 UTC by Jithin Emmanuel
Modified: 2008-12-16 14:45 UTC (History)
1 user (show)

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 Jithin Emmanuel 2008-08-13 07:01:37 UTC
Version:           0.5.0kde (using KDE 4.1.0)
Installed from:    Fedora RPMs
OS:                Linux

i am getting these two warning when opening a file with kcachegrind

1. KDEInit could not launch '/usr/bin/kcachegrind'.
2.dolphin KLauncher could not be reached via D-Bus. Error when calling start_service_by_desktop_path:
empty
Comment 1 Jithin Emmanuel 2008-08-13 07:03:08 UTC
One more thing when the file is opened dolphin widow turn entirely grey and stays like that for a few seconds before popping these errors.

Error 1 happens only once. 
Comment 2 Josef Weidendorfer 2008-08-13 17:51:21 UTC
I can reproduce the bug even in current trunk. And as
mentioned in bug 157853, getting rid of the
"X-DBUS-StartupType=Multi" line in the kcachegrind.desktop
file fixes the issue. But this is not the real fix.
So marking as duplicate.

*** This bug has been marked as a duplicate of 157853 ***
Comment 3 Jithin Emmanuel 2008-08-18 05:36:49 UTC
Just one doubt. Can you tell me why its only happening with kcachegrind. I notice this problem only with this one.
Comment 4 Josef Weidendorfer 2008-08-19 21:10:58 UTC
This is definitely a problem around the DBUS communication at startup.
In this regard, KCachegrind just uses standard code from the KDE
library. There is only one (!) line in the whole source code where
DBUS is mentioned explicitly (everything else should be done totally
transparent to the application code in the KDE library): Registering
the new KCachegrind window to DBUS, so that the window could be
controlled from the outside (e.g. triggering menu actions via DBUS).

Yes, it could be that this window registration done simultaneously
with standard DBUS startup registration leads to some kind of
deadlock with the symptoms you see. However, the bug still has to be
in KDE libraries, as this is a valid thing to do.

What about the other applications mentioned in above bug report?

As said, a workaround is to remove the DBUS keyword from kcachegrind.desktop.
Comment 5 David Faure 2008-12-16 02:27:29 UTC
For the record, I fixed this the proper way some time ago by adding
X-DBUS-ServiceName=net.sf.kcachegrind
to the desktop file.
Comment 6 Josef Weidendorfer 2008-12-16 02:49:29 UTC
Ah yes, I saw the commit, but forgot to close this bug.
Will do now, but I have absolutely no idea why specifying
the DBUS service name fixes the problem.
Thanks!

BTW, when I start dolphin in a KDE3 environment, the
KDE3 kcachegrind opens the file, but dolphin says
"KDEInit could not launch '.../kde3/bin/kcachegrind'".
Should I add a service name to that desktop file (of
the KDE3 version of kcachegrind), too?
Comment 7 David Faure 2008-12-16 13:17:48 UTC
True this isn't very much documented. I just created http://techbase.kde.org/Development/Architecture/KDE4/Starting_Other_Programs, please check if the klauncher section answers your question :-)

For dolphin-kde4 making klauncher-kde4 start kcachegrind-kde3, hmm, I assume it's finding the kcachegrind-kde4 desktop file, not the kcachegrind-kde3 desktop file, otherwise it wouldn't assume anything about it registering to dbus... [unless you're using 4.0.x or 4.1.0, before I fixed kservice not to treat the old dcop fields as meaning something about dbus]. I'm not sure how this could be fixed then, it's reading info about kcachegrind-kde4 and then starts kcachegrind-kde3, which behaves differently; this can't work.
Comment 8 Josef Weidendorfer 2008-12-16 14:26:30 UTC
Thanks for the description!

I am just not sure I would look
at this page when there is an error when another program is
running mine...
To make sure: the name "net.sf.kcachegrind" in the desktop file
is used both for klauchner waiting for registration, and also
by QDBusConnection::registerObject() to know which service to
register at all? Or does the latter come from another source
(such as KAboutData)?
And a suggestion: If there is no X-DBUS-ServiceName entry,
would it be possible to add a command line argument with a
unique random service name when launching?
Comment 9 David Faure 2008-12-16 14:45:45 UTC
I also added pointers to that page from the KToolInvocation api docs, but yeah, not sure how to make this better.

The name in the desktop file tells klauncher what to look for.
The application itself registers using the info in KAboutData. When there's a mismatch between those two things, you get the klauncher error.
An app starting up doesn't really know its own .desktop file [there could be more than one, there could be none at all...], so it can't read it from there.

> add a command line argument with a unique random service name when launching

We could add a --dbusname, I guess. Would work when specified in .desktop files, but the idea of klauncher adding a random name (for multi apps, not for unique apps of course), would break apps and users expectation. Right now the output of qdbus tells you which apps are running, org.kde.konqueror-16092 is easily recognizable, while org.kde.fjwigkaolhw wouldn't be ;)