Another thing to try: do all of the looping, image loading etc. in the 
background process, but queue the actual change of the background image as a 
deferred action (#addDeferredUIMessage:).



________________________________________
From: [email protected] 
[[email protected]] On Behalf Of Stéphane Ducasse 
[[email protected]]
Sent: Tuesday, December 14, 2010 1:56 PM
To: [email protected]
Subject: Re: [Pharo-project] Background changer script kills Pharo

thanks
We will have to have alook at semaphore and other....

stef

On Dec 14, 2010, at 7:08 PM, Tony Fleig wrote:

> 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