Closed bpbecker closed 12 months ago
I also experience this issue, although I can't vouch for the feelings of the associated interpreter task.
If you use the kernel interface to shut down running kernels, then Dyalog exits correctly. It seems the destructor doesn't do its job when the kernel is hosed. I'm not sure what can be done about this.
Is there some way to detect from the APL side that the connection has been lost, e.g. by polling the kernel? If so, then we can have a Timer that checks once a minute and simply shuts the interpreter down if there's no connection.
Yeah you can use 3501⌶
Then I believe adding 'Event'('Timer' '⍎{~⍵:⎕OFF}3501⌶⍬')⎕WS⍨'⎕SE.SelfCheck'⎕WC'Timer' 60E3
to dyalog_kernel/init.dyalog will shut the kernel down within a minute if it loses connection.
Once the kernel is hosed, the associated interpreter task is left as an orphan. Parentless, wandering the streets, lonely... it's very sad.