Bug 108326

Summary: Huge memleaks in krootimage (at least with SVG slideshow)
Product: kdm Reporter: Jo Schulze <jo>
Component: krootimageAssignee: kdm bugs tracker <kdm-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: wildfox
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:

Description Jo Schulze 2005-06-29 16:13:56 UTC
Version:            (using KDE KDE 3.4.1)
Installed from:    SuSE RPMs
OS:                Linux

After upgrading to KDE3.4.1, I tweaked kdm to display 4 different *.svgz wallpapers in slideshow mode on our server (which provides httpd, cupsd, mail via exim, mysqld, NIS, nfs, sshd, proftpd and serves several LTSP terminals). Since it's a server, the propability that kdm will run for a long time because no one logs in directly is pretty high. Here is the backgroundrc:
Background Common]
CacheSize=99
CommonDesktop=true
Dock=true
Export=false
LimitCache=true

[Desktop0]
BackgroundMode=VerticalGradient
BlendBalance=100
BlendMode=NoBlending
ChangeInterval=60
Color1=0,0,0
Color2=192,192,192
CurrentWallpaper=0
LastChange=1112890721
MinOptimizationDepth=1
MultiWallpaperMode=Random
Pattern=
Program=
ReverseBlending=false
UseSHM=true
Wallpaper=/opt/kde3/share/wallpapers/andes-venezolanos.svgz
WallpaperList=andes-venezolanos.svgz,aurora.svgz,here-gear.svgz,globe.svgz
WallpaperMode=Scaled

[FMSettings]
ItemTextBackground=invalid
NormalTextColor=0,0,0
ShadowEnabled=true
TextHeight=2
TextWidth=0
--eof

After that, I noticed that the whole machine became instable. Some services would die unexpectedly out of the blue, resulting in calls early in the morning: "I can't print/mail/login/..." I increased the loglevel and all these services were shutdown because of insufficient memory. Here is an example for mysqld:
Jun 29 12:17:19 holos kernel: Out of Memory: Killed process 7259 (mysqld-max).
Jun 29 12:27:36 holos kernel: Out of Memory: Killed process 10238 (mysqld-max).
Jun 29 12:27:36 holos kernel: Out of Memory: Killed process 10243 (mysqld-max).
Jun 29 12:27:36 holos kernel: Out of Memory: Killed process 10244 (mysqld-max).
Jun 29 12:36:57 holos kernel: Out of Memory: Killed process 10276 (mysqld-max).
Jun 29 12:36:57 holos kernel: Out of Memory: Killed process 10281 (mysqld-max).
Jun 29 12:36:57 holos kernel: Out of Memory: Killed process 10282 (mysqld-max).
Jun 29 12:38:09 holos kernel: Out of Memory: Killed process 10343 (mysqld-max).
--eof

I also noticed in the systat logs that the machine had strange swap actions at times where no one would actually work and no cronjob was active.

Well, today I found that one krootimage process alone occupied 48% of the memory (on a machine with 1GB phys. RAM and 0.5GB swap). Another was at 2nd place (systemwide) with 9%.

8-O

I think that's a bit too much for some eyecandy, eat up more memory than other services which are _really_ vital.
For now, I disabled the slideshow (logically, the memleak will be related to the slideshow mode, since displaying one picture for a long time shouldn't require any mem access once the data is loaded).
Comment 1 Jo Schulze 2005-07-05 02:26:02 UTC
Disableing the slideshow mode did the trick. The server is rock stable again.
Comment 2 Oswald Buddenhagen 2005-07-08 19:23:56 UTC
hmm, on first sight it indeed looks like the svg loader would be leaking rocks. maybe niko can say more. calling file is kdebase/kcontrol/background/bgrender.cpp starting with line 300. that code looks pretty hackish in general ...
Comment 3 Andreas Kling 2006-09-16 08:54:54 UTC
Fixed in revision 584936 yesterday.
Oswald: Thanks for pointing it out.