Bug 113203 - deleting /var/tmp results in unstartable KDE
Summary: deleting /var/tmp results in unstartable KDE
Status: RESOLVED FIXED
Alias: None
Product: kdelibs
Classification: Frameworks and Libraries
Component: ksycoca (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR critical
Target Milestone: ---
Assignee: Unassigned bugs mailing-list
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-09-24 12:22 UTC by Jan Huelsbergen
Modified: 2005-09-30 15:40 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 Jan Huelsbergen 2005-09-24 12:22:21 UTC
Version:           3.4.91 (using KDE Devel)
Installed from:    Compiled sources
Compiler:          gcc 4.0.2 
OS:                Linux

When deleting /var/tmp/kdecache-user, user cannot log into KDE anymore.

The first attempt results in the message "Could not start process Cannot talk to klauncher" to be shown in a kdialog while loading the panel. The login process seems to hang from there on.

The following attempts result in a xdialog saying "Could not start ksmserver. Check your installation".

I ran into this problem because I used to have /var/tmp in a tmpfs, which worked fine for KDE 3.3 and 3.4.
Comment 1 Thiago Macieira 2005-09-24 19:54:27 UTC
I've seen this happen.
Comment 2 Nicolas Goutte 2005-09-28 08:18:24 UTC
I had a similar symptom but only because I had remove the 2 syscoca files in /var/tmp/kdecache-user
Comment 3 Thiago Macieira 2005-09-28 13:08:26 UTC
Right, that's the symptom. If you run kbuildsycoca it works again.
Comment 4 Lubos Lunak 2005-09-30 15:40:33 UTC
SVN commit 465681 by lunakl:

Don't try to indirectly cause launching of kbuildsycoca from a call
that's supposed to launch kbuildsycoca.
BUG: 113203



 M  +10 -7     klauncher.cpp  


--- branches/KDE/3.5/kdelibs/kinit/klauncher.cpp #465680:465681
@@ -1143,13 +1143,16 @@
    request->startup_id = startup_id;
 #endif
    request->envs = envs;
-   // Find service, if any - strip path if needed
-   KService::Ptr service = KService::serviceByDesktopName( app.mid( app.findRev( '/' ) + 1 ));
-   if (service != NULL)
-       send_service_startup_info( request,  service,
-           startup_id, QValueList< QCString >());
-   else // no .desktop file, no startup info
-       cancel_service_startup_info( request, startup_id, envs );
+   if( app != "kbuildsycoca" ) // avoid stupid loop
+   {
+       // Find service, if any - strip path if needed
+       KService::Ptr service = KService::serviceByDesktopName( app.mid( app.findRev( '/' ) + 1 ));
+       if (service != NULL)
+           send_service_startup_info( request,  service,
+               startup_id, QValueList< QCString >());
+       else // no .desktop file, no startup info
+           cancel_service_startup_info( request, startup_id, envs );
+   }
    request->transaction = dcopClient()->beginTransaction();
    queueRequest(request);
    return true;