** 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

Reply via email to