Skip site navigation (1)Skip section navigation (2)
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>