In case anybody is interested in this... I added logging to an external file and found that the hang or crash always occurs during the delay.
I removed the Delay from the loop and the problem disappeared. (I'm sure glad I have a multi-CPU system though, as it ramped one CPU up to 100%.) I conclude that this is not an image processing related problem, but actually a problem with Delay or semaphores or scheduling in Pharo. I'm continuing my efforts to narrow the problem down. TF On Mon, Dec 13, 2010 at 2:19 PM, Tony Fleig <[email protected]> wrote: > I tried using the following background changer for Pharo (from > http://book.pharo-project.org/book/CustomizingPharo/PuttingABackgroundPicture). > All was well and it nicely changed the background image to various > images from socwall.com. I walked away and when I came back, Pharo was > no longer running. > > To make a long story short, on Linux and OS X (I did not try Windows), > after some period of time, regardless of whether I am actively using > Pharo, Pharo either hangs (becomes unresponsive to input, using 100% > CPU, images no longer changing) or disappears abruptly. I tried > several variations of the script, including loading images from a > local directory (i.e. no network code at all) and even loading images > into an ImagePreview morph. > > In all cases, Pharo eventually either aborts or hangs. I have found > nothing in the logs to indicate what happened -- no entries at the > time of the abort or hang at all. Decreasing the delay seems to make > it happen sooner; I can usually make it happen within 15 minutes of > execution with a 2 second delay. It seems to happen more quickly when > changing the background image than in an ImagePreview morph. > > I monitored Pharo's memory usage and it increased from 106 MB to 109 > MB during the execution. Plenty of free memory on the system. > > My questions are: > > 1. How to debug this? Log to a file to see where it is hanging? > > 2. How to regain control of a hung Pharo. I tried Cmd-<everything> to no > avail. > > 3. Does anyone have any idea what might be happening? Some resource > being used up, a race condition, etc.? > > Here's the original script > > [[[ > | rx str url form | > str := (HTTPSocket httpGet: > 'http://www.socwall.com/browse/index.php?wpLimit=1&wpSortby=8') > contents. > rx := '.*(http\://.+tb_.+\.jpg).*' asRegex. > url := (rx matches: str) > ifTrue: > str := (rx subexpression: 2) > copyWithRegex: 'tb_' matchesReplacedWith: '' ] > ifFalse: [ nil ]. > url ifNotNil: [ > form := ImageReadWriter formFromStream: (HTTPSocket httpGet: url). > World backgroundImage: form layout: #scaled]] on: Error do: [:ex| ]. > 1 minute asDelay wait ] repeat ] newProcess > name: 'Random background changer'; > priority: Processor userBackgroundPriority; > resume > > > Regards, > TF >
