Mark Haney posted on Fri, 28 Aug 2009 14:34:52 -0400 as excerpted:

> I've just upgraded to 4.3.0 and I've got a question.  On my 'taskbar',
> if an app crashes (like Firefox just did trying to play a flash video)
> I'm getting a 'button' on the taskbar of the app that just won't go
> away.  I have 2 currently, one from evolution and one from Firefox.
> 
> Does anyone know how to make those go away?  Is anyone else seeing this
> problem?

I haven't seen the problem and don't really know how to make them go away 
(well, I do if it's as I expect, but the cure is likely to be considered 
worse than the problem), but I think I know what's happening:

Background: In Linux (and I'd suspect most Unixen tho I have no 
experience or knowledge other than Linux to back that up), every 
application has a parent.  If the parent "disowns" the application, then 
the application's parent becomes init itself, init being the first 
userland application started by the kernel, with various functions...

When an application terminates, the kernel keeps its context around so 
the parent can make use of various information from its former child 
process.  When the parent is done, it (according to my understanding) 
tells the kernel it can clean up what's left, and that's when the rest of 
the process cleanup takes place, including release of any memory the 
process leaked and didn't properly release previously, etc.

Processes that have terminated but that the parent process has not yet 
cleaned up are said to be "zombie" processes.  Once in awhile, if you 
have the process status column displayed in top or (I think) ksysguard 
(aka system monitor, I said "I think" because I'm not sure ksysguard 
exposes that info, but I think it does, as an optional column), or if you 
enable a status option for ps, you'll see such zombie processes, normally 
marked with a "z".  (FWIW, the most common status is sleeping, the 
application is waiting for something and is sleeping until it happens, 
this is normally denoted with "s".)

Normally, zombies are reasonably rare, and don't show up often, because 
the state lasts only a very short period (fractions of a second) if the 
parent harvests its children and cleans up properly (telling the kernel 
it's OK to do so), but some processes aren't normally equipped to manage 
children as they don't expect to launch any, and thus don't harvest the 
zombies if for some reason they /do/ launch one.  In other instances, the 
child may have terminated abnormally and for various reasons the parent 
isn't prepared to harvest what it was left with.

Unfortunately, because the kernel can't clean up the zombies until the 
parent says it can, if the parent doesn't give permission, the zombies 
just sit there... until the parent itself terminates.

That's therefore the way such zombies are ultimately cleaned up, the 
parent terminates and the zombies are cleaned up as the parent is cleaned 
up.  But as I said, the cure may well be considered worse than the 
problem, if the parent is a critical part of X or KDE itself.  In that 
case, to cleanup, you'd have to shutdown KDE (and/or X) and either 
continue at the text console or respawn *dm if you have a graphical X 
login manager.  That's not always convenient, and unfortunately, it seems 
such zombies appear at the least convenient times.

I'm not positive what you're seeing is zombie processes, but it does 
sound like it.  Note that both of the apps in question are non-kde.  KDE 
has it's own methods of dealing with kde apps that crash, but may not be 
prepared to cope with crashing gtk/gnome apps, which both firefox and 
evolution are.  Ultimately, the easiest solution (certainly from KDE's 
perspective, the firefox and evolution devs I'm sure don't find it to 
easy or the problem wouldn't be occurring) is probably to fix those apps 
so they don't crash in the first place.

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


Reply via email to