*BSD News Article 25029


Return to BSD News archive

Xref: sserve comp.unix.misc:10533 comp.unix.pc-clone.32bit:5150 comp.unix.bsd:13088 comp.windows.x.i386unix:5841 biz.sco.general:9375
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!nic.hookup.net!news.kei.com!news.byu.edu!news.provo.novell.com!park.uvsc.edu!u.cc.utah.edu!cs.weber.edu!terry
From: terry@cs.weber.edu (A Wizard of Earth C)
Newsgroups: comp.unix.misc,comp.unix.pc-clone.32bit,comp.unix.bsd,comp.windows.x.i386unix,biz.sco.general
Subject: Re: SCO market share
Date: 16 Dec 1993 01:06:24 GMT
Organization: Weber State University, Ogden, UT
Lines: 57
Message-ID: <2eocag$ce1@u.cc.utah.edu>
References: <9312142221.aa02201@fags.stonewall.demon.co.uk> <2elv4l$7bf@panix.com> <2em4ds$n22@vanbc.wimsey.com>
NNTP-Posting-Host: cs.weber.edu

In article <2em4ds$n22@vanbc.wimsey.com> sl@vanbc.wimsey.com (Stuart Lynne) writes:
>>were that broken (as commerical OSes clearly are just as often as free ones,
>
>That's a pretty sweeping statement. 
>
>Can you please supply some quantifiable data, the metric's you're using, 
>the method used to collect same etc. 

I'm not the initial poster, but:

>Internet SCO UNIX troubleshooting ......................UNIX Facsimile Software
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Surely as an Internet SCO UNIX troubleshooter, you are aware of the Lachman
bug where the remote diconeect removes the local context on the first error
without attempting to recover, such that (for both SCO UNIX and Xenix):

	/* fd = socket*/
	write( fd, buf, len);	/* not checked -- yields -1*/

	if ( rlen = read( fd, buf, len)) == -1) {	/* EXITS!*/
		...

(1)	The remote side closes the fd, the local write fails with -1
	and the streams context for the fd is destroyed.

(2)	A subsequent second operation (in this case a read) on the
	invalid fd does not return an error (per the documentation);
	instead the process is kicked as if it called exit(2).

I *should* be able to deal with the error on the read *by itself*...
I don't care how many errors I get, until I close(2) it, it has no
right to destroy the context (PS: this was reported in 1989).

Or the select() (to narrow ourselves down to Xenix only) does not
work on streams fd's -- poll must be used instead (hence the hack
function XSelect() in the X lib).

Or the select() (to narrow ourselves to SCO UNIX only) does not
have sufficient resoloution (being limited to the clock update
frequency instead of the clock frequency) limiting it to 10ms
resoloution (being implemented in the library using poll doesn't
help, either), in clear violation of SVID Third Edition (not to
mention getitimer/setitimer (in the RT section)).

There are bunches more examples of "well known problems" besides these
(Check out Eric Raymonds PC UNIX FAQ) that have yet to be corrected.

Something being commercial no more enobles it than it being non-commercial;
broke code is broke code.


					Terry Lambert
					terry@cs.weber.edu
---
Any opinions in this posting are my own and not those of my present
or previous employers.