On Wed, Apr 5, 2017 at 9:16 AM, Jeff Woolsey <[email protected]> wrote: > Based on an assurance > [https://wiki.illumos.org/display/illumos/illumos+FAQs, Is illumos > compatible with Solaris/OpenSolaris?] that OI-hipster was upward > binary-compatible with S10
We probably need to fix the FAQ clarify the conditions under which that is actually true. As an aside, there are limitations. The conditions were always pretty strict, so that compatibility only applies to (a) Solaris itself, and (b) only those interfaces explictly marked as being compatible. This explicitly excludes any 3rd-party applications and libraries that are shipped with Solaris, and as of Solaris 10 there were a *lot*. In particular, link with the system openssl and you're in trouble. What I've found in general is that older (pre-S10) applications tend to be fine, S10-native applications can be problematic. There's also the fact that we don't claim compatibility with any version of Solaris after the fork. So S10U10 is OK, S10U11 is problematic, S11 is essentially a no-go area. > and that any discrepancies were to be > reported, and some S10 exploits becoming more widely known, I upgraded > from Solaris S10XU8 to OI-hipster-2016.10. There was some teething, > and one thing I still haven't resolved is an S10 binary that works right > in S10 and wrong in OI regarding non-blocking reads of stdin. It > happens to be my main project, of course... > > truss, in short, says: > > Solaris X86 S10U8 > > fcntl(0, F_GETFL) = 2 > fcntl(0, F_SETFL, FWRITE|FNONBLOCK) = 0 > read(0, 0xFFFFFD7FFF0C0028, 4096) Err#11 EAGAIN > fcntl(0, F_SETFL, FWRITE|FOFFMAX) = 0 > > Openindiana-hipster 2016.10 > > fcntl(0, F_GETFL) = 8194 > fcntl(0, F_SETFL, FWRITE|FOFFMAX|FNONBLOCK) = 0 > read(0, 0xFFFFFD7FFF0C0028, 4096) = 0 > fcntl(0, F_SETFL, FWRITE|FOFFMAX) = 0 > > > Does anybody know why the behavior is different, and how to get the > former under OI. I expect there is some library difference somewhere. > I've been poking at tcsetattr to tweak this, and the best I can do is > see 4 characters get queued up before the program gets them (S10U8 does > that with different termios flags, too). read() returning 0 instead of > EAGAIN is interpreted as EOF and the program quits, rather clumsily. > I don't suppose you have the source? (I guess you may not have, as if you did then you could just recompile it.) Where does stdin come from, because it's different in the 2 cases (under OI it's largefile enabled, from your truss output)? -- -Peter Tribble http://www.petertribble.co.uk/ - http://ptribble.blogspot.com/ _______________________________________________ openindiana-discuss mailing list [email protected] https://openindiana.org/mailman/listinfo/openindiana-discuss
