Another issue with new events

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Another issue with new events

Igor Stasenko
I unsure if it because of my intrusions.. but it happens second time
when i hit 'save the image'.

I can't give a textual trace, because at the moment when error
appears, image is no longer able to receive the events.

Image are saved OK, but then it going through warm startup and throws
this error.
Now i know what is wrong, and the troublemaker is my code. :)

The Delay instance of EventPollingFetcher are created just once, and
then reused in event loop.
At the time when image saved, its already scheduled in Delay, but then
new eventpolling fetcher get installed in new process, and same delay
got rescheduled , which leads to this error.

Btw, i just found that saved image, has same problems - it throws the
same error just a bit later after startup :)

One solution is to create a new delay each time we need to wait:
(Delay forMilliseconds: EventPollDelay) wait.

another, is to make sure that given delay is not scheduled, by sending
 #unschedule to it at the time when it reinitializing event fetcher.

--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

error.png (15K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Another issue with new events

Igor Stasenko
On a second thought, i think the toublemaker is not my code :)
It seems that reinstalling event loop works incorrectly, because it
should make sure that previous event loop process is terminated.
And hence any delays which was scheduled in it will be unscheduled by
#ifCurtailed: block

Delay>>wait
        "Schedule this Delay, then wait on its semaphore. The current process
will be suspended for the amount of time specified when this Delay was
created."

        self schedule.
        [delaySemaphore wait] ifCurtailed:[self unschedule].

The solution, is to promote fetcherProcess ivar to class var, to make
sure that there is only one event loop process existing in system (but
we could have multiple instance of InputEventFetcher singletons ;)


2009/4/21 Igor Stasenko <[hidden email]>:

> I unsure if it because of my intrusions.. but it happens second time
> when i hit 'save the image'.
>
> I can't give a textual trace, because at the moment when error
> appears, image is no longer able to receive the events.
>
> Image are saved OK, but then it going through warm startup and throws
> this error.
> Now i know what is wrong, and the troublemaker is my code. :)
>
> The Delay instance of EventPollingFetcher are created just once, and
> then reused in event loop.
> At the time when image saved, its already scheduled in Delay, but then
> new eventpolling fetcher get installed in new process, and same delay
> got rescheduled , which leads to this error.
>
> Btw, i just found that saved image, has same problems - it throws the
> same error just a bit later after startup :)
>
> One solution is to create a new delay each time we need to wait:
> (Delay forMilliseconds: EventPollDelay) wait.
>
> another, is to make sure that given delay is not scheduled, by sending
>  #unschedule to it at the time when it reinitializing event fetcher.
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Another issue with new events

Michael Rueger-6
In reply to this post by Igor Stasenko
Igor Stasenko wrote:
> I unsure if it because of my intrusions.. but it happens second time
> when i hit 'save the image'.

I can't reproduce that, especially with a fully updated 288 image.

> The Delay instance of EventPollingFetcher are created just once, and
> then reused in event loop.
> At the time when image saved, its already scheduled in Delay, but then
> new eventpolling fetcher get installed in new process, and same delay
> got rescheduled , which leads to this error.

In the latest fixes the delay is unscheduled, so this shouldn't happen
anymore.

Michael


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project