From owner-freebsd-questions Mon Mar 4 07:19:19 1996 Return-Path: owner-questions Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id HAA06966 for questions-outgoing; Mon, 4 Mar 1996 07:19:19 -0800 (PST) Received: from haywire.DIALix.COM (root@haywire.DIALix.COM [192.203.228.65]) by freefall.freebsd.org (8.7.3/8.7.3) with ESMTP id HAA06956 for ; Mon, 4 Mar 1996 07:19:14 -0800 (PST) Received: (from news@localhost) by haywire.DIALix.COM (8.7.4/8.6.12) id XAA22868 for freebsd-questions@freebsd.org; Mon, 4 Mar 1996 23:20:41 +0800 (WST) X-Authentication-Warning: haywire.DIALix.COM: news set sender to usenet-request@haywire.dialix.com using -f Received: from GATEWAY by haywire.DIALix.COM with netnews for freebsd-questions@freebsd.org (problems to: usenet@haywire.dialix.com) To: freebsd-questions@freebsd.org Date: 4 Mar 96 15:10:31 GMT From: peter@jhome.DIALix.COM (Peter Wemm) Message-ID: Organization: DIALix Services, Perth, Australia. References: <199603032317.SAA02433@steffi.dgsys.com>, <199603032019.NAA04527@phaeton.artisoft.com> Subject: Re: Netscape an not right scroller? Sender: owner-questions@freebsd.org Precedence: bulk terry@lambert.org (Terry Lambert) writes: >> Is this the correct behaviour when running Netscape in Linux compat? >> >> ie. I have to click on the window to have a right scroller appear. >> >> FREEBSD 2.1 >From other discussions, this seems to be a difference in the atomicity >of writes on POSIX domain (UNIX domain) sockets between BSD and Linux. >In particular, it looks like Linux does not combine multiple writes >by the server so that the client's read gets more than one event at >at a time. Actually, no. It's unrelated to the pipe code, because it behaved exactly the same over a tcp X11 connection to a remote server. >It seems the rewrite of XtMainAppLoop() in the Xt toolkit (upon which >Motif is based) jumps directly into select instead of doing an >XPending() and causes events to be lost. Specifically, expose >events for the just realized child window for the scrollbar widget. >This is, in fact, a bug in the way Netscape's main event loop was >programmed. >The fix *should* be to not agregate writes on the UNIX domain socket, >so that the reader sees each write using a seperate read. Alternately, >you could block writes until the buffer is read by the reader, which >will serialize them and, again, prevent agregation (this will incidently >make Larry McVoy's pipe benchmark go faster while reducing overall >pipe throughput by increasing system call overhead for the same amount >of pipe data). >That is, intentionally break the BSD pipe code, one way or another. >Yes, I know this is bogus as hell. Incidently, this is fixed in -current. I think the problem was something to do with signal masking, but I am not certain. I am tempted to back out all my changes one at a time on my copy and see which one was the critical fix. It was *not* pipe related, I am very sure of that. :-) I *think* it was signal masking, or select(), or a missing return value from some signal syscalls, but I have not eliminated the possibilities. In any case, the linux Netscape-2.0 is working fine on -current with the existing socket and pipe code, and ELF support is likely to be finished some time in the next week. Cheers, -Peter > Terry Lambert > terry@lambert.org >--- >Any opinions in this posting are my own and not those of my present >or previous employers.