On Sat, May 21, 2016 at 12:05 AM, Mariano Martinez Peck
<marianop...@gmail.com> wrote:
> Ben, for the record, I am using DelayMillisecondScheduler for a day and a
> half and so far no problem.

Cool. Thats why I left it there. I hope to soon have something for you
to try with the newer design. Thanks for the update.

cheers -ben

> On Thu, May 19, 2016 at 9:19 AM, Mariano Martinez Peck
> <marianop...@gmail.com> wrote:
>>
>>
>>
>> On Wed, May 18, 2016 at 9:49 PM, Martin McClure <mar...@hand2mouse.com>
>> wrote:
>>>
>>> On 05/18/2016 03:17 PM, Martin McClure wrote:
>>>>
>>>> On 05/18/2016 08:49 AM, Mariano Martinez Peck wrote:
>>>>>
>>>>> Hi guys,
>>>>>
>>>>> I am seeing a problem in Pharo 5.0 regarding Delay >> wait. I cannot
>>>>> explain how this could happened but it does, and it happened to me a 
>>>>> couple
>>>>> of times (but not fully reproducible).
>>>>>
>>>>
>>>> Hmm. The schedulerResumptionTime is, somehow, being (approximately)
>>>> doubled. It's not clear how that can happen, but I'll look a little more.
>>>>
>>>
>>> Mario, is there any chance that you might be saving the image during one
>>> of these Delays?
>>>
>>>
>>> This one smells like a race condition, and I think I see something that
>>> *might* explain it. But I don't have any more time to spend on this one, so
>>> I'll leave the rest to someone else. I hope this is helpful:
>>>
>>> The only way I immediately see for the schedulerResumptionTime to become
>>> approximately doubled is if the Delay's resumption time is adjusted by
>>> #restoreResumptionTimes without previously having been adjusted by
>>> #saveResumptionTimes.
>>>
>>> The only time either of those are sent, that I can see, is on saving the
>>> image. Both are normally sent, (save before the snapshot, restore
>>> afterwards), but there may be a hole there.
>>>
>>
>> Martin, first off, thanks for the research!!!
>>
>> Now....your email made me remember something: I did get VM crash when
>> saving the image a couple of times. The VM crashed when saving the image. If
>> I re-opened the image, it looks like if the image was indeed saved (so the
>> snapshot primitive itself did work), but I suspect not all shutdown code
>> could have been run correctly.
>>
>> The VM crash looks like the FreeTypeFace >> pvtDestroyHandle  which, as
>> far as I know, it's a "known crash" (I attach crash dump). From what I can
>> see, if I follow all the stack, the crash starts from the WeakArray >>
>> startUp: .
>> That means that...depending on the order of the startup list...the
>> Scheduler may not have been run after the crash.
>>
>> Now.... WeakArray initialization does:
>>
>> SessionManager default
>> registerSystemClassNamed: self name.
>> While...
>>
>> Delay class >> startUp "Restart active delay, if any, when resuming a
>> snapshot." Scheduler startUp.
>>
>> And the Delay registration is
>>
>> SessionManager default
>> registerSystemClassNamed: self name
>> atPriority: 20.
>>
>> So...that seems correct...
>>
>> I can verify this by:
>>
>> SessionManager default systemCategory prioritizedList
>>
>> Anyway...not sure if this adds something, but just wanted to note this.
>>
>>
>>>
>>> #saveResumptionTimes is only sent (by this scheduler class) when the
>>> accessProtect semaphore is held, but #handleTimerEvent: is executed in the
>>> timing Process *without* the protection of accessProtect, in the case of the
>>> VM signaling the timingSemaphore. If the VM signals the timingSemaphore,
>>> #handleTimerEvent: could run in the middle of #saveResumptionTimes. If some
>>> Delay expires because of that timer event, our Delay could move from being
>>> the first suspended delay to being the active delay. If that happens after
>>> we've adjusted the active delay, but before we've processed the suspended
>>> delays, that Delay will not get adjusted, and will show the symptoms that
>>> Mariano is seeing.
>>>
>>> Also, I'm not sure how the Heap that holds the suspendedDelays will react
>>> to being modified in the middle of an enumeration. That might open a larger
>>> window for the problem.
>>>
>>> Regards,
>>>
>>> -Martin
>>>
>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com

Reply via email to