OS X poll breakage (Was: Please help test recent changes)
Demi Marie Obenour
demiobenour at gmail.com
Wed Jan 12 05:43:39 AEDT 2022
On 1/11/22 02:30, Damien Miller wrote:
> On Tue, 11 Jan 2022, Damien Miller wrote:
>
>> Here's the client side log of the failure. It comes from the
>> "same with early close of stdout/err" section of the test, but I can't
>> actually see anything get closed...
>>
>> debug3: receive packet: type 91
>> debug2: channel_input_open_confirmation: channel 0: callback start
>> debug2: client_session2_setup: id 0
>> debug1: Sending command: exec sh -c 'sleep 2; exec > /dev/null 2>&1; sleep 3; exit 0'
>> debug2: channel 0: request exec confirm 1
>> debug3: send packet: type 98
>> debug2: channel_input_open_confirmation: channel 0: callback done
>> debug2: channel 0: open confirm rwindow 0 rmax 32768
>> debug2: channel 0: rcvd adjust 2097152
>> debug3: receive packet: type 99
>> debug2: channel_input_status_confirm: type 99 id 0
>> debug2: exec request accepted on channel 0
>> channel 0: invalid rfd pollfd[2].fd 4 r4 w7 e8 s-1
>>
>> and (separate run) with DEBUG_CHANNEL_POLL set:
>>
>> debug2: channel_input_status_confirm: type 99 id 0
>> debug2: exec request accepted on channel 0
>> debug3: dump_channel_poll: channel 0: rfd r4 w7 e8 s-1 pfd[2].fd=4 want 0x01 ev 0x01 ready 0x00 rev 0x00
>> debug3: dump_channel_poll: channel 0: rfd r4 w7 e8 s-1 pfd[3].fd=7 want 0x01 ev 0x00 ready 0x00 rev 0x00
>> debug3: dump_channel_poll: channel 0: rfd r4 w7 e8 s-1 pfd[4].fd=8 want 0x01 ev 0x00 ready 0x00 rev 0x00
>> debug1: channel_after_poll: pfd[2].fd 4 rev 0x0020
>> debug3: dump_channel_poll: channel 0: rfd r4 w7 e8 s-1 pfd[2].fd=4 want 0x01 ev 0x01 ready 0x00 rev 0x20
>> channel 0: invalid rfd pollfd[2].fd 4 r4 w7 e8 s-1
>> FAIL: exit code (with sleep) mismatch for: 255 != 0
>>
>> It looks like it fails with HAVE_POLL set to 0 too.
>>
>> Still looking...
>
> Wow, it looks like Darwin's poll(2) is completely broken for character-
> special devices (at least). E.g. the attached program spins shows similar
> behaviour when run on /dev/null - it spins, returning revents=POLLNVAL.
Is using kqueue(2) an option? That’s faster, and it doesn’t have the
problem with large file descriptors that poll(2) has.
--
Sincerely,
Demi Marie Obenour (she/her/hers)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xB288B55FFF9C22C1.asc
Type: application/pgp-keys
Size: 4885 bytes
Desc: OpenPGP public key
URL: <http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20220111/45651b0b/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20220111/45651b0b/attachment.asc>
More information about the openssh-unix-dev
mailing list