[bt-devel] Excessive CPU consumption during module install
    Jaak Ristioja 
    Ristioja at gmail.com
       
    Tue Jul  7 12:47:01 MST 2009
    
    
  
Hi!
I've been able to reproduce this with 2.0.1. Here's part of a backtrace
for this situation:
#0  0x00007fa2a733fe2c in sword::FileDesc::getFd () from
/usr/lib/libsword-1.5.11.so
#1  0x00007fa2a732e9cc in sword::SWConfig::Load () from
/usr/lib/libsword-1.5.11.so
#2  0x00007fa2a732f5e1 in sword::SWConfig::SWConfig () from
/usr/lib/libsword-1.5.11.so
#3  0x00007fa2a7332c3e in sword::SWMgr::loadConfigDir () from
/usr/lib/libsword-1.5.11.so
#4  0x00007fa2a7339fae in sword::SWMgr::Load () from
/usr/lib/libsword-1.5.11.so
#5  0x00000000004e6bcc in CSwordBackend::initModules ()
#6  0x000000000055957e in instbackend::backend ()
#7  0x0000000000560209 in BtInstallThread::BtInstallThread ()
#8  0x0000000000562049 in
BtInstallProgressDialog::BtInstallProgressDialog ()
#9  0x0000000000564fea in BtSourceWidget::slotInstallAccepted ()
It appears that the BtInstallProgressDialog constructor creates a
BtInstallThread for every work selected to be installed. The
BtInstallThread constructor calls instbackend::backend, which calls
CSwordBackend::initModules(), which calls sword::SWMgr::Load(). The
latter method takes most CPU time. Multiply that time with the number of
works selected and you got a huge delay.
Unfortunately I'm not familiar with the code, so I have been unable to
produce a fix. I hope you'll figure this out before 2.1. :)
Blessings!
Jaak
    
    
More information about the bt-devel
mailing list