[Cuis-dev] Freezing UI - can't interrupt via Alt+.

Jaromir Matas mail at jaromir.net
Sat Jul 2 02:03:13 PDT 2022


Hi Juan,

the update indeed works, thanks!
An observation though: if you do:
1) Semaphore new wait
2) Alt+.
3) Proceed
It disrupts the screen and 'restore display' from the World menu is needed; nothing serious, just reporting because I don't know whether this is to be expected or not :)

There's one issue I'd very much like to discuss:

s := Semaphore new.
[1/0. s signal] fork.
s wait

When I first ran this example I kind of hoped the UI would not freeze and would open a debugger on the ZeroDivide. I can't see any reason why not behave like that but both Squeak and Cuis freeze because the UI waits on the semaphore and the forked process requests the UI to open a debugger but the UI is stuck at the semaphore :)

My expectation was the system would spawn a new UI that would open the debugger but I have no experience with UIs and debuggers and can imagine it may be very tricky :)

I'd be very interested in your opinion how the above example could/should be handled by the UI.

Of course if you run the example in a non-UI process it works as expected but it'd be nice I guess if running it in the UI would behave similarly :)

[s := Semaphore new.
[1/0. s signal] fork.
s wait] fork

Many thanks!
Jaromir


--

Jaromír Matas

mail at jaromir.net

From: Juan Vuletich<mailto:JuanVuletich at zoho.com>
Sent: Saturday, July 2, 2022 1:54
To: Discussion of Cuis Smalltalk<mailto:cuis-dev at lists.cuis.st>
Cc: Juan Vuletich<mailto:JuanVuletich at zoho.com>; Jaromir Matas<mailto:mail at jaromir.net>
Subject: Re: [Cuis-dev] Freezing UI - can't interrupt via Alt+.

On 7/1/2022 9:45 AM, Juan Vuletich via Cuis-dev wrote:
On 7/1/2022 8:17 AM, Jaromir Matas via Cuis-dev wrote:
Hi Juan, all,

I wonder why this can’t be interrupted by Alt+.

Semaphore new wait

The system returns a message “Can not interrupt background process” and the image has to be closed.

The same happens in this case:

s := Semaphore new.
[1/0. s signal] fork.
s wait

It not only freezes the UI but is not even recoverable…

Thanks,
jaromir


--

Jaromír Matas

mail at jaromir.net<mailto:mail at jaromir.net>


Hi Jaromir,

The problem is in #handleUserInterrupt, in particular in #processTakingMostCPU. #handleUserInterrupt runs on a high priority process, so the first thing it needs to figure out is which process to interrupt. I wrote that code believing that alt+. would need to interrupt busy code, and it works in that case. It doesn't work if the UI process is waiting and never resumed, as it is not "busy".

We need to do better here. I won't be able to work on this for the next few days, but would be very happy if any of you folks suggest / code a solution.

Thanks,


--

Juan Vuletich

www.cuis-smalltalk.org<http://www.cuis-smalltalk.org>

https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev

https://github.com/jvuletich

https://www.linkedin.com/in/juan-vuletich-75611b3

https://independent.academia.edu/JuanVuletich

https://www.researchgate.net/profile/Juan-Vuletich

https://patents.justia.com/inventor/juan-manuel-vuletich

https://twitter.com/JuanVuletich

Just pushed a fix. Please review it. It is update #5346.

Thanks!


--

Juan Vuletich

www.cuis-smalltalk.org<http://www.cuis-smalltalk.org>

https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev

https://github.com/jvuletich

https://www.linkedin.com/in/juan-vuletich-75611b3

https://independent.academia.edu/JuanVuletich

https://www.researchgate.net/profile/Juan-Vuletich

https://patents.justia.com/inventor/juan-manuel-vuletich

https://twitter.com/JuanVuletich

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220702/53b0d962/attachment-0001.htm>


More information about the Cuis-dev mailing list