[kde-linux] Unpopulated Control-Center window

Duncan 1i5t5.duncan at cox.net
Tue Dec 1 00:45:04 UTC 2009

Stan Goodman posted on Mon, 30 Nov 2009 21:40:53 +0200 as excerpted:

> At 18:31:11 on Monday Monday 30 November 2009, Werner Joss
> <werner at hoernerfranzracing.de> wrote:
>> Am Monday 30 November 2009 17:21:27 schrieb Stan Goodman:
>> > I'd be grateful for advice on how to restore this functionality.
>> maybe running kbuildsycoca --global helps (kbuildsycoca4 for kde4) -
>> this should rebuild the control center database/cache.
> This is what happened:
> # kbuildsycoca --global
> Warning: kbuildkbuildsycoca is unable to register with DCOP

"kdesycoca" is I believe short for "kde system config cache" (kde, plus 
the first two letters of each word thereafter).  Unlike, for example, 
MSWormOS, KDE doesn't have a binary blob registry, but rather, chose the 
*nix way of configuration, text based configuration files -- rather a lot 
of them for something as big as kde.  But accessing and parsing all these 
text files is slow, so the data is saved into the "kdesycoca" (again, 
system config cache) binary cache, and under normal conditions, 
applications simply use the data as it's found, there.

It then becomes kbuildsycoca's job to update the kdesycoca database when 
anything besides kde touches it.  (When kde apps change their own config, 
the system updates both the text file and the running dcop/dbus.  
kbuildsycoca is designed to bring in changes made thru non-kde means, 
editing the config files directly with a text editor, for instance, or 
when the package manager installs or uninstalls something.)  When kde 
starts, kbuildsycoca normally runs automatically in incremental mode, 
doing a quick check to see what config files if any have changed and 
updating that part of the config cache.  However, sometimes that doesn't 
catch all the changes.  If from a terminal (konsole window or CLI login) 
you run kbuildsycoca (kbuildsycoca4 for kde4) --help, you'll get a list 
of command line options, including the --global and --noincremental 
options we're interested in here.  --noincremental forces a reread of all 
text files, regardless of whether they'd be detected as changed or not.  
--global creates the global database from scratch.  (FWIW, I'm not sure 
what the difference between them might be.  Perhaps --noincremental only 
checks files known to exist while --global checks all known locations for 
new files, as well?)

> That sounds like the reason the problem exists in the first place.

dcop for kde3, now a common dbus, used by both kde4 and gnome, is the 
system message bus -- the way dcop/dbus enabled apps talk to each other.  
If there's something wrong with things as there is if you don't see a 
populated kcontrol, dcop may indeed not be running.  It seems 
particularly sensitive to kdesycoca corruption, and it's not unusual at 
all to have it crash (silently, you only know it happened when stuff 
starts acting weird) as a result.

kbuildsycoca (I expect that second "kbuild", as in kbuildkbuildsycoca, 
above, is a typo) will in my experience then need to be run twice, the 
first time with the mentioned error but fixing things up at least enough 
to run dcop, the second time succeeding, ensuring that any loose ends are 
fixed up as well.

Now there are some "interesting" (as in that old said to be Chinese 
curse, may you live in "interesting" times) problems when kde3 and kde4 
are installed on the same box, especially when you try to run apps from 
one in the other.  Depending on the setup (generally, depending on 
whether the distribution has set it up so both can run together or not, 
and whether the sysadmin has perhaps changed some settings, possibly long 
before kde4 ever entered the picture, such that the distribution's 
working cohabitation config breaks), both the kdesycocas might be 
fighting each other, trying to use the same cache file, each in turn 
overwriting the other, depending on whether a kde3 or kde4 app was run 
last.  I had this problem for awhile, so I know how frustrating it can 
be.  But while that's the most obvious problem, other more complex 
problems exist as well.  Again depending on the setup, the kde3 and kde4 
apps may be overwriting each others text configs, thus corrupting the 
data used to generate the kdesycoca in the first place.  If that's 
happening, it's possible kbuildsycoca won't be able to make sense of 
things at all, and there'll be no way to get a sensible config.  In this 
case, checking the sysadmin's (or user's) own settings to see if for 
example, the KDEDIR or KDESYCOCA environmental variables are being set 
and exported, thus thwarting the distribution's efforts to keep things 
separate, might help.  If neither the user nor the sysadmin on the local 
system has changed such settings, perhaps the distribution isn't setup to 
allow both kde3 and kde4 in parallel.  In that case, the old 
recommendation from the kde4 developer docs might help: run only kde3 OR 
kde4 apps as a single user.  Use a separate user to run apps from the 
other version.

FWIW, the problems I had here were a combination of my own settings 
fighting the distribution settings, and the distribution not getting it 
quite right for some time.  Once someone from the distribution's kde 
project blogged that they thought they had it worked out, and to check 
the individual system and user settings and NOT set specific variables 
like the two mentioned above, and I unset the ones I had been setting, 
everything in that regard "just worked".  In fact, it worked so well that 
I was able to switch to kde4 incrementally, an application at a time, by 
uninstalling the kde3 app so the kde4 app would be used, while still in 
kde3, setting up that kde4 app as I wanted it, then moving on to the next 
one.  So that's what I did with konqueror, konsole, kmail, etc.  Then for 
kwin, I killed the kde3 kwin and started the kde4 kwin, configuring it 
using kcontrol4 (generically aka system settings, altho it's kde4 
settings it controls, NOT general system settings!).  Once /that/ was 
done, the only critical thing left was plasma itself.  I quit kde3 and 
started kde4 at that point, and configured plasma-desktop from there.

Obviously, that would not have worked, had the kde3 and kde4 stuff still 
been fighting each other, so the distribution did a pretty good job of 
getting them working together... once I got the kde3-only era vars I had 
set out of the way. =:^)  FWIW, I was eventually able to uninstall kde3 
and qt3 entirely, tho it took awhile to find replacements for the kde3 
functionality (such as global multikey khotkeys) that remains broken in 
kde4, in that case, apparently permanently, according to the bug.

Meanwhile, there's another area the problem could be in, as well.  I left 
this for last as I don't remember the details for kde3, but perhaps it 
can at least point you in the right direction, if you get this far 
without a fix.  In general, the desktop file entries that tell kcontrol3 
what menu items (for that's what they are) to include in kcontrol are 
like any other kmenu desktop file entries... but for two changes.  One, 
the kcontrol entries are hidden by default, and thus do NOT display on 
the menu as they would otherwise.  IIRC this is accomplished with a 
HIDDEN=true entry in the file, or some such.  That explains why they 
aren't normally on the menu, even tho they're mostly ordinary menu 
entries.  Two, I think they have a kcontrol=true or similar entry (I 
think that one's something different, but if you find the associated 
desktop files, you should recognized the line) of some kind, as well.  
This is what actually tells kcontrol that it should appear in it.  
Without that, it wouldn't appear in kcontrol.  

Finally, there's one other change in this area, with two parts. 
Somewhere, I think it's an environmental var but don't recall exactly, 
there's a setting that tells kcontrol which submenu of the kmenu to look 
in to find its control modules.  There's a default, to .hidden I think 
(with the whole submenu hidden, again with a desktop file entry, 
HIDDEN=true or some such), if the variable (or whatever) isn't set, but 
regardless of whether it's using the default or is pointed elsewhere, if 
that submenu doesn't exist or does but isn't what that setting is pointed 
at, all the desktop file entries for all the kcontrol applets may be 
setup perfectly fine elsewhere in the kmenu, but kmenu will still appear 
empty, because it's pointed at the wrong place to look for them.

I actually had this happen to me at one point as well.  Thus, I remember 
it, but it was some time ago and since I only have kde4 installed now, 
it's not like I can verify the details too easily.  But maybe there's 
enough there to at least point you in the right direction, and by looking 
around on your system and googling, you can find the rest.

> I should also mention that upon boot, there is a dialog box, as follows:
> *****
> x console <2>
> smartd[2004]: Device: /dev/sda [SAT], 2 offline uncorrectable sectors
> Console log
> *****
> This seems to mean that I have two bad sectors in the area of the HD
> used by this OS. I suppose this may be what is behind the non-functional
> kcontrol.

If they're detected and offline, then reinstalling whatever was on them 
should fix the problem, since they're now marked as bad.  So try that if 
you need to.  But I suspect the problem has been there for awhile and 
isn't the problem in this case.  Unless it just started showing that,
and/or you see the uncorrectable sector numbers start increasing!  If 
they start increasing rather regularly, you better make sure your backups 
are up2date and tested to work, or absent that, shut things down and get 
a new disk *NOW*, praying that the old one survives long enough to get 
the data you need off of it transferred to the new one.

Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman

More information about the kde-linux mailing list