Interlisp / medley

The main repo for the Medley Interlisp project. Wiki, Issues are here. Other repositories include maiko (the VM implementation) and Interlisp.github.io (web site sources)
https://Interlisp.org
MIT License
376 stars 19 forks source link

ldex on Solaris currently broken #82

Closed nbriggs closed 3 years ago

nbriggs commented 3 years ago

Starting ldex results in a "Pollable Event" message and immediate exit. Works OK on macOS, Ubuntu, FreeBSD

waywardmonkeys commented 3 years ago

Is this new or has it been happening for a while?

nbriggs commented 3 years ago

It's new.

On Dec 15, 2020, at 7:09 PM, Bruce Mitchener notifications@github.com wrote:

Is this new or has it been happening for a while?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Interlisp/medley/issues/82#issuecomment-745734404, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB6DAWNAUFSCYPTFGGZT7FDSVAQHXANCNFSM4U5JKVZQ.

nbriggs commented 3 years ago

I'm pretty sure it's b234064d91924a86dffd3f60f96588097f9dff47 where I changed fd_set handling, and couldn't test on the Solaris box because it was offline due to network problems.

On Dec 15, 2020, at 7:09 PM, Bruce Mitchener notifications@github.com wrote:

Is this new or has it been happening for a while?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Interlisp/medley/issues/82#issuecomment-745734404, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB6DAWNAUFSCYPTFGGZT7FDSVAQHXANCNFSM4U5JKVZQ.

nbriggs commented 3 years ago

I'm breaking for dinner, but without having read the code I'd guess that I managed to turn on signals before the signal handler was setup. Probably in the ethernet code, and we only have the ethernet turned on on SunOS5.

nbriggs commented 3 years ago

The root cause of the problem is that init_Xevent() calls ioctl(..., I_SETSIG, S_INPUT) before the Lisp code has initialized the signal handlers. A solution will have to wait until tomorrow.

waywardmonkeys commented 3 years ago

Is that even necessary anymore? On some platforms, I think the Xorg server sets up signal-based I/O correctly, but I don't really know what ldex is doing here. (And is your version of Solaris even using Xorg?)

nbriggs commented 3 years ago

It may not be necessary. Yes, Solaris 11.4 on SPARC does use the Xorg server. It's trying to take an interrupt for all key-press and mouse-movement events. It's doing that on the FD for the X display socket and Xorg doesn't know anything about it. In theory, the select() should fire and we should process the events right away anyway -- it may have been put in there before they had the select() working properly, or it may be paranoia, or it may actually get your keys a ms earlier...

On Dec 15, 2020, at 10:54 PM, Bruce Mitchener notifications@github.com wrote:

Is that even necessary anymore? On some platforms, I think the Xorg server sets up signal-based I/O correctly, but I don't really know what ldex is doing here. (And is your version of Solaris even using Xorg?)

nbriggs commented 3 years ago

Fixed by Interlisp/maiko@fe0f9fff2cfe83e90b8ef663c11a31fbde4d3a8e (PR Interlisp/maiko#78)