[Bug 819473] Re: Xvnc consumes 100% CPU usage after client disconnects

Launchpad Bug Tracker 819473 at bugs.launchpad.net
Wed Sep 7 11:15:12 UTC 2011


This bug was fixed in the package vnc4 - 4.1.1+xorg4.3.0-37ubuntu3

---------------
vnc4 (4.1.1+xorg4.3.0-37ubuntu3) oneiric; urgency=low

  * Fix 100% CPU hang when run from inetd in nowait mode if a client
    connects and disconnects quickly (e.g., nmap).  LP: #819473
    - Added patch to debian/patches/*100-percent-cpu-hang-in-inetd-mode.patch
      for reference.
 -- Tristan Schmelcher <tristan_schmelcher at alumni.uwaterloo.ca>   Fri, 02 Sep 2011 13:42:34 -0700

** Changed in: vnc4 (Ubuntu)
       Status: New => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/819473

Title:
  Xvnc consumes 100% CPU usage after client disconnects

Status in “vnc4” package in Ubuntu:
  Fix Released

Bug description:
  I have been experiencing this bug for several years but I finally
  decided to investigate it. I run Xvnc through xinetd and I often find
  that there are left-over Xvnc processes each consuming 100% CPU. They
  tend to crop up when a client disconnects. In particular, scanning
  ports with nmap produces the problem every time.

  I used gdb to capture a few stack traces of the offending code:

  (gdb) bt
  #0  0x00007f468f811c1f in _IO_vfprintf_internal (s=<value optimized out>, 
      format=<value optimized out>, ap=<value optimized out>) at vfprintf.c:1542
  #1  0x00007f468f81bb24 in __fprintf (stream=<value optimized out>, 
      format=<value optimized out>) at fprintf.c:33
  #2  0x000000000055ddbe in rfb::Logger_File::write (this=0xaa9cc0, level=0, 
      logname=0x7b4b14 "XserverDesktop",
      message=0x7ffff1070a60 "XserverDesktop::wakeupHandler: unable to accept new connection: Invalid argument (22)") at Logger_file.cxx:88
  #3  0x000000000054b989 in rfb::Logger::write(int, const char *, const char *, typedef __va_list_tag __va_list_tag *) (this=0xaa9cc0, level=0, 
      logname=0x7b4b14 "XserverDesktop",
      format=0x7b4c08 "XserverDesktop::wakeupHandler: %s", ap=0x7ffff1071a90)
      at Logger.cxx:76
  #4  0x000000000053db47 in rfb::LogWriter::error(char const*, ...) ()
  #5  0x00000000005438ed in XserverDesktop::wakeupHandler(fd_set*, int) ()
  #6  0x000000000053c054 in vncWakeupHandler ()
  #7  0x000000000042809b in WakeupHandler ()
  #8  0x000000000043ab17 in WaitForSomething ()
  #9  0x0000000000427866 in Dispatch ()
  #10 0x000000000040c2e6 in main ()

  (gdb) bt
  #0  0x00007f468f8a23a0 in __write_nocancel () at ../sysdeps/unix/syscall-template.S:82
  #1  0x00007f468f83d773 in _IO_new_file_write (f=0x7f468fb589c0, data=<value optimized out>, n=69) at fileops.c:1276
  #2  0x00007f468f83d3ba in new_do_write (fp=0x7f468fb589c0, data=0x7f4690735000 " XserverDesktop: XserverDesktop::wakeupHandler: unable to accept new\nfrom list!\nt!\nVNC.\n", to_do=69) at fileops.c:530
  #3  0x00007f468f83e925 in _IO_new_do_write (fp=<value optimized out>, data=<value optimized out>, to_do=69) at fileops.c:503
  #4  0x00007f468f83d51d in _IO_new_file_xsputn (f=0x7f468fb589c0, data=0x7b79ea, n=1) at fileops.c:1358
  #5  0x00007f468f8109b6 in _IO_vfprintf_internal (s=0x7f468fb589c0, format=0x7b79ea "\n%*s", ap=0x7ffff10708f0) at vfprintf.c:1333
  #6  0x00007f468f81bb24 in __fprintf (stream=<value optimized out>, format=<value optimized out>) at fprintf.c:33
  #7  0x000000000055dd91 in rfb::Logger_File::write (this=0xaa9cc0, level=0, logname=0x7b4b14 "XserverDesktop", message=0x7ffff1070a94 "connection: Invalid argument (22)") at Logger_file.cxx:85
  #8  0x000000000054b989 in rfb::Logger::write(int, const char *, const char *, typedef __va_list_tag __va_list_tag *) (this=0xaa9cc0, level=0, logname=0x7b4b14 "XserverDesktop", format=0x7b4c08 "XserverDesktop::wakeupHandler: %s", ap=0x7ffff1071a90) at Logger.cxx:76
  #9  0x000000000053db47 in rfb::LogWriter::error(char const*, ...) ()
  #10 0x00000000005438ed in XserverDesktop::wakeupHandler(fd_set*, int) ()
  #11 0x000000000053c054 in vncWakeupHandler ()
  #12 0x000000000042809b in WakeupHandler ()
  #13 0x000000000043ab17 in WaitForSomething ()
  #14 0x0000000000427866 in Dispatch ()
  #15 0x000000000040c2e6 in main ()

  (gdb) bt
  #0  0x00007f3b454913e3 in __gxx_personality_v0 ()
     from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
  #1  0x00007f3b44f4c646 in _Unwind_RaiseException ()
     from /lib/x86_64-linux-gnu/libgcc_s.so.1
  #2  0x00007f3b45491a51 in __cxa_throw ()
     from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
  #3  0x000000000057780c in network::TcpListener::accept (this=0x1d0cb40)
      at TcpSocket.cxx:417
  #4  0x0000000000543863 in XserverDesktop::wakeupHandler(fd_set*, int) ()
  #5  0x000000000053c054 in vncWakeupHandler ()
  #6  0x000000000042809b in WakeupHandler ()
  #7  0x000000000043ab17 in WaitForSomething ()
  #8  0x0000000000427866 in Dispatch ()
  #9  0x000000000040c2e6 in main ()

  So it seems to be spending all its time on C++ exception handling and
  logging error messages. :/

  I also got a couple profiles with oprofile, which are attached.

  Note that other ppl have this problem too, e.g.
  http://ubuntuforums.org/showthread.php?t=172839

  ProblemType: Bug
  DistroRelease: Ubuntu 11.04
  Package: vnc4server 4.1.1+xorg4.3.0-37ubuntu2
  ProcVersionSignature: Ubuntu 2.6.38-10.46-generic 2.6.38.7
  Uname: Linux 2.6.38-10-generic x86_64
  NonfreeKernelModules: nvidia
  Architecture: amd64
  Date: Mon Aug  1 11:26:14 2011
  ProcEnviron:
   LANGUAGE=en_US:en
   PATH=(custom, user)
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  SourcePackage: vnc4
  UpgradeStatus: Upgraded to natty on 2011-05-08 (85 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/vnc4/+bug/819473/+subscriptions



More information about the Ubuntu-sponsors mailing list