[squeak-dev] Re: Process bug introduced in 3.10
stephane ducasse
stephane.ducasse at free.fr
Sun Apr 27 21:05:01 UTC 2008
Bryce
which version of 3.9?
The latest I created with the fixes of andreas? 3.9.1
or the one before, because I have the impression that the latest 3.9.1
has the same fixes than
3.10. So may be there is a problem with the fixes I harvested too.
Can you check? I'm travelling right now.
Stef
On Apr 27, 2008, at 9:19 PM, <bryce at kampjes.demon.co.uk> <bryce at kampjes.demon.co.uk
> wrote:
> Andreas Raab writes:
>> bryce at kampjes.demon.co.uk wrote:
>>> My next attempt at formulating a version of the same bug that'll
>>> run in a vanilla 3.10 image is:
>>>
>>> 100 timesRepeat:
>>> [processes := (1 to: 10) collect: [:each| [[(MessageTally new
>>> spyEvery: 1 on: [(Delay forMilliseconds: 500) wait]) ] repeat]
>>> fork ].
>>> (Delay forSeconds: 1) wait.
>>> processes do: [:each| each terminate].]
>>
>> Running MessageTallies concurrently is a big, big no-no. Check out
>> class
>> MessageTally and in particular its (shared) class variables
>> ObservedProcess and Timer.
>
> Good point, but I can reproduce the bug without using MessageTally
> or any class variables. ExuperyProfiler doesn't use class variables.
>
> The following will reproduce it:
> TestProfiler>>spyOn: aBlock
> | myDelay millisecs timer |
> millisecs := 1.
> (aBlock isMemberOf: BlockContext) ifFalse:
> [self error: 'spy needs a block here'].
> myDelay := Delay forMilliseconds: millisecs.
> timer := [[true] whileTrue:
> [myDelay wait].
> nil] newProcess.
> timer priority: Processor userInterruptPriority.
> "activate the probe and evaluate the block"
> timer resume.
> aBlock ensure: [timer terminate].
> ^ self
>
> 100 timesRepeat:
> [processes := (1 to: 10) collect: [:each| [[(TestProfiler new
> spyOn: [(Delay forMilliseconds: 500) wait]) ] repeat] fork ].
> (Delay forSeconds: 1) wait.
> processes do: [:each| each terminate]]
>
> TestProfiler is a new subclass of Object without any variables or
> any other methods.
>
> I'm not convinced this is a new bug with 3.10. It feels similar to
> something I've encountered earlier. It is happening frequently in
> 3.10 but not in 3.9.
>
> Bryce
>
>
More information about the Squeak-dev
mailing list
|