From owner-freebsd-hackers Fri Sep 19 20:06:22 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id UAA28510 for hackers-outgoing; Fri, 19 Sep 1997 20:06:22 -0700 (PDT) Received: from spinner.dialix.com.au (spinner.dialix.com.au [202.12.86.3]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id UAA28503 for ; Fri, 19 Sep 1997 20:06:16 -0700 (PDT) Received: from spinner.dialix.com.au (localhost.dialix.com.au [127.0.0.1]) by spinner.dialix.com.au with ESMTP id LAA23383; Sat, 20 Sep 1997 11:05:18 +0800 (WST) Message-Id: <199709200305.LAA23383@spinner.dialix.com.au> X-Mailer: exmh version 2.0zeta 7/24/97 To: Greg Lehey cc: Terry Lambert , nsmart@iona.com, Don.Lewis@tsc.tdk.com, hackers@FreeBSD.ORG Subject: Re: Bug in malloc/free In-reply-to: Your message of "Sat, 20 Sep 1997 09:41:55 +0930." <19970920094155.13744@lemis.com> Date: Sat, 20 Sep 1997 11:05:17 +0800 From: Peter Wemm Sender: owner-freebsd-hackers@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk Greg Lehey wrote: > On Fri, Sep 19, 1997 at 11:49:06PM +0000, Terry Lambert wrote: > >>> When a read or write fault occurs on page zero in a program running > >>> on SVR4, rather than crashing, they map the page and note the effect. > > > > [ ... ] > > > >> It's not just incorrect, it's inconsistent. Some SVR4 do, some SVR4 > >> don't. > > > > Sorry dude, but if it's derived from USL sources, it does this, > > unless they've specifically taken it out. > > If you say so. Then they've specifically taken it out. Don't forget the mixed lineage of the SVR4 tree. My memory is a little vague, but as I understand/remember:- - AT&T/USL release a native version on the 3b series of machines. - Intel get hold of it and port it to the 386 (SVR4/386), merging in all the Xenix etc stuff from SVR3. I think this was with the involvement of Interactive but I don't really know. I suspect this port was where the first 'map page zero on demand' behavior happened. Anyway, this was handed back to USL or something. - Meanwhile, motorola were porting the 3b code to the 68000 series (Amiga UNIX was based on the motorola port which "felt" quite different to the SVR4/386 derived code). - Somewhere along the way, the SVR4/386 port was adapted to run on the i860 series (eg: what was used at PCS for the Firebox(?) etc series). - Also, the SVR4/386 code was converted to run on the MIPS series processors (as used in the SVR4 internals book). When I met one of the authors of the book, he had some interesting stories to tell about this. - Meanwhile.. SVR4/386 was being madly polished for retail by the likes of Dell, ESIX, UHC, etc. They were feeding bugs/fixes back to USL too. One of these groups may have been the origin of the 'map page zero on demand' "feature". I know the Dell flavour had it, and I think that ESIX didn't. It may have been Dell that was responsible for submitting it back to USL in between the 2.0 and 3.0 USL SVR4.0/386 releases. - And then... USL took the SVR4.0/386 code, merged in (or had others merge in) various things like SMP, nearly-B1 level security etc and came out with SVR4.2. - And then came unixware, then novell bought USL, then SCO bought novell's unix business including USL and Unixware and now it's supposedly been merged into SVR5 or whatever. Let the games really begin. Anyway, this is definately heading away from freebsd-bugs relevance... > > If so, then they are probably paying a huge royalty increment for > > the priveledge, since you pay more (by a factor of 10) for not being > > exactly their sources for everything but drivers. > > *All* the SVR4 systems I know deviate elsewhere than the drivers. You can say that again... :-) They are quite a mixed breed. They vary more than the *BSD's. :-) However, one thing that still suprises me is how well the ABI had stuck. I was amazed that I could take a program (perforce client and server) dynamically linked for NCR's current x86 SMP system and run it on our old 1993 vintage SVR4.0 system without the slightest hiccup. I suspect this is because the SVR4 libc.so is really a .a file with some of the components (the ABI core) living in libc.so.1, and the rest in statically linked .o objects. I disagree with some of the choices (eg: utmp is outside the ABI, so every program that uses getutent() has a compiled-in knowledge of the utmp format on that system and cannot work on another via a different implementation in libc.so.1.) > Greg Cheers, -Peter