From owner-freebsd-questions Sun Mar 3 12:22:49 1996 Return-Path: owner-questions Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id MAA11442 for questions-outgoing; Sun, 3 Mar 1996 12:22:49 -0800 (PST) Received: from phaeton.artisoft.com (phaeton.Artisoft.COM [198.17.250.211]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id MAA11437 for ; Sun, 3 Mar 1996 12:22:47 -0800 (PST) Received: (from terry@localhost) by phaeton.artisoft.com (8.6.11/8.6.9) id NAA04527; Sun, 3 Mar 1996 13:19:49 -0700 From: Terry Lambert Message-Id: <199603032019.NAA04527@phaeton.artisoft.com> Subject: Re: Netscape an not right scroller? To: robert@steffi.dgsys.com (Robert Nicholson) Date: Sun, 3 Mar 1996 13:19:49 -0700 (MST) Cc: questions@FreeBSD.ORG In-Reply-To: <199603032317.SAA02433@steffi.dgsys.com> from "Robert Nicholson" at Mar 3, 96 06:17:18 pm X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-questions@FreeBSD.ORG Precedence: bulk > 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. 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. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers.