I've instructed myself a bit on how to use gdb and went after the bug. Here's a stack trace of the bug in action:
(gdb) bt #0 0x00007ffff31a9c53 in __select_nocancel () at ../sysdeps/unix/syscall-template.S:82 #1 0x00007ffff7b6cd69 in pkgAcquire::Run (this=0x7fffffffc830, PulseIntervall=<value optimized out>) at acquire.cc:346 #2 0x00007ffff7b666c2 in ListUpdate (Stat=<value optimized out>, List=..., PulseInterval=5000) at algorithms.cc:1367 #3 0x00000000004653a9 in RPackageLister::updateCache ( this=<value optimized out>, status=0xa80d00, error=...) at rpackagelister.cc:1301 #4 0x0000000000440148 in RGMainWindow::cbUpdateClicked ( self=<value optimized out>, data=0x75ba70) at rgmainwindow.cc:2999 What's happening here is that synaptic is using the apt libraries to run a tight loop using select to update the progress bar status. In RPackageLister::updateCache, line 1301 is: bool res = ListUpdate(*status, *_cache->list(), 5000); That eventually gets used as tv.tv_usec in a select() call making this a select loop where each select only waits for 0.005 seconds. I tried bumping that value to 500000 (0.5 seconds) and it solves the CPU problem but because the code is single threaded it slows down the whole interface. A more involved patch is needed. -- Update Manager causes high Xorg CPU usage when checking for updates https://bugs.launchpad.net/bugs/355355 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs