Description of problem: Xloadimage has a memory leak and will crash if enough images are viewed one after another. I include the patch to correct the issue, and an additional patch to adjust the -delay option to allow <1second delays, the delay patch does not change the way xloadimage works except for allowing <1 second decimal values to work. Man page does not indicate that only integers are allowed, and it seems reasonable to allow <1 second delays. Version-Release number of selected component (if applicable): Fedora 17 How reproducible: Likely only crashes on 32bit, on 64 bit will have excessive memory consumption and probably page excessively. Steps to Reproduce: 1. xloadimage *.jpg with enough images and hit N until it crashes...it may not crash on 64bit but the machine will eventually start paging, on 32bit it will crash when it hits around 2GB. 2. hit n until it crashes, with ps one can see that with each image viewed the memory size is growing. 3. Actual results: it crashes. Expected results: no crash. Additional info: Patches: Patch to fix bug: -- new.c.orig 2012-12-16 11:15:06.753666740 -0600 +++ new.c 2012-12-16 11:15:28.042023127 -0600 @@ -181,7 +181,7 @@ image->depth= 24; image->pixlen= 3; image->data= (unsigned char *)lmalloc(ovmul(ovmul(width, height), 3)); - image->data= (unsigned char *)lmalloc(width * height * 3); +/* image->data= (unsigned char *)lmalloc(width * height * 3); */ return(image); } Patches to add -delay <1 functionality, delay otherwise still works exactly as is described in the man page just allowing <1 second to be valid. --- options.c.orig 2012-12-16 11:16:05.147899943 -0600 +++ options.c 2012-12-16 11:16:41.897787363 -0600 @@ -720,7 +720,7 @@ continue; #else /* !NO_DELAY */ - newopt->info.delay= getInteger(DELAY, argv[a]); + newopt->info.delay= getFloat(DELAY, argv[a]); break; #endif /* !NO_DELAY */ --- options.h.orig 2012-12-16 11:16:09.440769951 -0600 +++ options.h 2012-12-16 11:17:20.620614643 -0600 @@ -49,7 +49,7 @@ unsigned int x, y, w, h; /* area of image to be used */ } clip; unsigned int colors; /* max # of colors to use for this image */ - unsigned int delay; /* # of seconds delay before auto pic advance */ + double delay; /* # of seconds delay before auto pic advance */ char *display; /* display name */ struct { char *type; /* image type */ --- window.c.orig 2012-12-16 11:42:35.779494949 -0600 +++ window.c 2012-12-16 11:44:52.846362310 -0600 @@ -583,9 +583,9 @@ install= (getOption(global_options, INSTALL) != NULL); private_cmap= (getOption(global_options, PRIVATE) != NULL); if ((opt= getOption(image_options, DELAY))) - delay= opt->info.delay; + delay= opt->info.delay*1000000; else if ((opt= getOption(global_options, DELAY))) - delay= opt->info.delay; + delay= opt->info.delay*1000000; else delay= 0; if ((opt= getOption(image_options, VISUAL))) @@ -872,7 +872,7 @@ #ifdef ENABLE_TIMEOUT AlarmWentOff = 0; signal(SIGALRM, delayAlarmHandler); - alarm(delay); + ualarm(delay,0); #endif /* ENABLE_TIMEOUT */ }
*** Bug 887598 has been marked as a duplicate of this bug. ***
updated patch for window.c (ualarm does not work >999999 us): --- window.c.orig 2012-12-16 11:42:35.779494949 -0600 +++ window.c 2012-12-19 21:25:48.179115901 -0600 @@ -583,9 +583,9 @@ install= (getOption(global_options, INSTALL) != NULL); private_cmap= (getOption(global_options, PRIVATE) != NULL); if ((opt= getOption(image_options, DELAY))) - delay= opt->info.delay; + delay= opt->info.delay*1000000; else if ((opt= getOption(global_options, DELAY))) - delay= opt->info.delay; + delay= opt->info.delay*1000000; else delay= 0; if ((opt= getOption(image_options, VISUAL))) @@ -872,7 +872,10 @@ #ifdef ENABLE_TIMEOUT AlarmWentOff = 0; signal(SIGALRM, delayAlarmHandler); - alarm(delay); + if (delay > 999999) + alarm(delay/1000000); + else + ualarm(delay,0); #endif /* ENABLE_TIMEOUT */ }
xloadimage-4.1-13.fc17 has been submitted as an update for Fedora 17. https://admin.fedoraproject.org/updates/xloadimage-4.1-13.fc17
xloadimage-4.1-13.fc18 has been submitted as an update for Fedora 18. https://admin.fedoraproject.org/updates/xloadimage-4.1-13.fc18
Package xloadimage-4.1-13.fc17: * should fix your issue, * was pushed to the Fedora 17 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing xloadimage-4.1-13.fc17' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-2013-0108/xloadimage-4.1-13.fc17 then log in and leave karma (feedback).
xloadimage-4.1-13.fc17 has been pushed to the Fedora 17 stable repository. If problems still persist, please make note of it in this bug report.
xloadimage-4.1-13.fc18 has been pushed to the Fedora 18 stable repository. If problems still persist, please make note of it in this bug report.