[Bug 2945] New: sshd unstable on Illumos (and probably Solaris) when compiled in XPG4 mode
bugzilla-daemon at bugzilla.mindrot.org
bugzilla-daemon at bugzilla.mindrot.org
Wed Dec 19 10:06:34 AEDT 2018
https://bugzilla.mindrot.org/show_bug.cgi?id=2945
Bug ID: 2945
Summary: sshd unstable on Illumos (and probably Solaris) when
compiled in XPG4 mode
Product: Portable OpenSSH
Version: 7.9p1
Hardware: amd64
OS: Solaris
Status: NEW
Severity: major
Priority: P5
Component: sshd
Assignee: unassigned-bugs at mindrot.org
Reporter: openssh at sentfrom.com
Created attachment 3217
--> https://bugzilla.mindrot.org/attachment.cgi?id=3217&action=edit
Patch to check if the STREAMS modules are already pushed
My build of OpenSSH 7.9p1 on OpenIndiana oi151a9 and on SmartOS
joyent_20170302T081240Z was hanging after a few minutes of use.
After further investigation, the root cause was this issue in Illumos:
https://www.illumos.org/issues/9042
(not sure if it is also present in Oracle’s version of Solaris,
probably so because the change dates to 2008)
Duplicate STREAMS terminal and line discipline modules were causing the
instability.
Dump of STREAMS modules in Solaris SSH:
ecthelion ~>m -p 22
mordac ~>strconf
ttcompat
ldterm
ptem
pts
In the affected OpenSSH 7.9p1
ecthelion ~>m -p 2223
Last login: Tue Dec 18 20:49:04 2018 from 38.99.40.226
mordac ~>strconf
ttcompat
ldterm
ptem
ttcompat
ldterm
ptem
ttcompat
ldterm
ptem
pts
The root cause is that if the binary is compiled in XPG4 compliant mode
(which is pretty much the default with reasonably modern versions of
GCC), libc pushes the module
http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/sys/open.c#163
but then again so does OpenSSH in bed_openpty.c, and we end up with
triplicate modules pushed, with unpredictable results that usually
manifest themselves as the connection hanging after a while:
Rather than checking if _XPG4 is defined to decide whether to push the
modules or not, the fix I adopted in the attached patch is to check if
the modules are already pushed before pushing them in
openbsd-compat/bsd-openpty.c. I am being conservative and made the
change Solaris-only as I have no idea if HP-UX supports the I_FIND
ioctl or not.
--
You are receiving this mail because:
You are watching the assignee of the bug.
More information about the openssh-bugs
mailing list