Date: 4 Mar 96 15:10:31 GMT From: peter@jhome.DIALix.COM (Peter Wemm) To: freebsd-questions@freebsd.org Subject: Re: Netscape an not right scroller? Message-ID: <peter.825952231@jhome.DIALix.COM> References: <199603032317.SAA02433@steffi.dgsys.com>, <199603032019.NAA04527@phaeton.artisoft.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?peter.825952231>