dolphinsmalltalk / Dolphin

Dolphin Smalltalk Core Image
MIT License
303 stars 58 forks source link

Runaway background operations are not interruptible after 5 seconds #1081

Closed blairmcg closed 3 years ago

blairmcg commented 3 years ago

Dolphin has an interrupt key, the default being Ctrl+F12, that can interrupt any runaway operation that might either never terminate, or might take a very long time to terminate. This can be useful in a development environment where one might accidentally trigger some kind of iterative operation that one realises is not going to finish any time soon.

Since Windows introduced its "Window Ghosting" feature, the interrupt key has stopped working as soon as the "Not responding" notification appears (or appears to appear) in the title bar. What has actually happened is that Windows window manager has placed a window over the window it thinks is not responding, allowing that window to be moved around and closed. Unfortunately this shadows out the underlying window, and prevents it ever seeing the interrupt key so that the process really is non-responsive, even to being interrupted.

Reported by Frank Lesser.

To repro:

  1. Evaluate [true] whileTrue
  2. Press Ctrl+F12 within 5 seconds
  3. Dismiss the walkback dialog that appears
  4. Evaluate [true] whileTrue again
  5. Wait at least 5 seconds (or until the 'Not responding' caption appears)
  6. Press Ctrl+F12 again

On the 2nd attempt, the interrupt key sequence will be ignored, and it will not be easy to interrupt the process