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
>

Reply via email to