** Description changed:
Binary package hint: libx11-6
Description: Ubuntu 8.04.2
Release: 8.04
libx11-6:
Installed: 2:1.1.3-1ubuntu2
Candidate: 2:1.1.3-1ubuntu2
Version table:
*** 2:1.1.3-1ubuntu2 0
500 http://us.archive.ubuntu.com hardy/main Packages
100 /var/lib/dpkg/status
Symptoms: very slow drawing times for text strings in X clients,
restored to normal if mouse moves over the X client's window while
drawing. Originally seen in charts produced in the scilab application,
but underlying problem appears to exist in all X clients due to Hardy
X11 runtime library problem. This problem did not exist in Gutsy (I
recently upgraded).
Cause: strace shows that X clients under Ubuntu 8.04 do not set X
client-server socket's TCP_NODELAY option. Therefore X server can
potentially wait until X server's timeout before sending ACK packet back
to X client. This occurs in some (or all) X text drawing commands which
do not require a reply, therefore waiting for the ACK until the next
packet happens to be sent from X server back to X client. Under Windows
this delay is 200 ms, causing extremely slow drawing times if the window
contains a lot of text. ACK delay under Hardy is very small (< 1 ms),
making this issue imperceptible when X server is also running
(displaying) on a Hardy machine.
Strace run on Ubuntu 8.04 contains this trace for opening the socket to
the X server:
6246 socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
6246 connect(3, {sa_family=AF_INET, sin_port=htons(6000),
sin_addr=inet_addr("192.168.0.14")}, 16) = 0
6246 getpeername(3, {sa_family=AF_INET, sin_port=htons(6000),
sin_addr=inet_addr("192.168.0.14")}, [16]) = 0
The same startup on RedHat:
[pid 8014] socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
[pid 8014] setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid 8014] setsockopt(3, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
[pid 8014] connect(3, {sa_family=AF_INET, sin_port=htons(6000),
sin_addr=inet_addr("192.168.0.14")}, 16) = 0
[pid 8014] getpeername(3, {sa_family=AF_INET, sin_port=htons(6000),
sin_addr=inet_addr("192.168.0.14")}, [16]) = 0
Note the lack of setsockopt() calls in Hardy. The missing setsockopt() calls
occur in apparently all Hardy X clients, including (for example) xterm,
therefore I am *guessing* at this point that the problem occurs in the base X11
client library.
How to duplicate:
strace -f -e trace=network,read,write,open,close -o ./strace.out
/usr/bin/scilab -nw
plot(1:10,1:10,'-m');
Notice the very slow drawing times for axes labels (text).
Look in strace.out file for the lines above.
Run same strace command under Gutsy or under other Linux versions (such
as RedHat, etc.).
Strace shows the same difference in setsockopt() calls for any other X
client starting, such as xterm.
+
+ [lspci]
+ 00:00.0 Host bridge [0600]: Intel Corporation 82G33/G31/P35/P31 Express DRAM
Controller [8086:29c0] (rev 02)
+ Subsystem: Micro-Star International Co., Ltd. Unknown device [1462:7338]
+ 01:00.0 VGA compatible controller [0300]: nVidia Corporation G72 [GeForce
7300 SE] [10de:01d3] (rev a1) (prog-if 00 [VGA controller])
+ Subsystem: eVga.com. Corp. Unknown device [3842:c428]
--
X11 clients use blocking sockets causing large drawing times
https://bugs.launchpad.net/bugs/320150
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs