nvbn / everpad

Evernote client well integrated with linux desktop
1.17k stars 143 forks source link

Quite high CPU usage for everpad #238

Open darkk opened 11 years ago

darkk commented 11 years ago

I've installed everpad, the version is 2.4-0~quantal. Initial sync went flawlessly (now I have backup of my evernote data in sqlite db, yay!), but everpad still uses 5% of CPU core while it should be idle.

strace shows following loop for everpad process:

[pid 26396] 1359214201.493405 poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=13, events=POLLIN}, {fd=15, events=POLLIN}, {fd=7, events=POLLIN}, {fd=16, events=POLLIN}, {fd=20, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}], 10, 48) = 0 (Timeout)
[pid 26396] 1359214201.542076 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.542420 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.542647 recvfrom(9, 0x2c49954, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.543030 poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=13, events=POLLIN}, {fd=15, events=POLLIN}, {fd=7, events=POLLIN}, {fd=16, events=POLLIN}, {fd=20, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}], 10, 0) = 0 (Timeout)
[pid 26396] 1359214201.543366 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.543744 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.544145 recvfrom(9, 0x2c49954, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.544256 poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=13, events=POLLIN}, {fd=15, events=POLLIN}, {fd=7, events=POLLIN}, {fd=16, events=POLLIN}, {fd=20, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}], 10, 0) = 0 (Timeout)
[pid 26396] 1359214201.544395 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.544551 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.544647 recvfrom(9, 0x2c49954, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.544739 poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=13, events=POLLIN}, {fd=15, events=POLLIN}, {fd=7, events=POLLIN}, {fd=16, events=POLLIN}, {fd=20, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}], 10, 48) = 0 (Timeout)
[pid 26396] 1359214201.593175 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.593372 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.593550 recvfrom(9, 0x2c49954, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.593661 poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=13, events=POLLIN}, {fd=15, events=POLLIN}, {fd=7, events=POLLIN}, {fd=16, events=POLLIN}, {fd=20, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}], 10, 0) = 0 (Timeout)
[pid 26396] 1359214201.593826 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.594181 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.594317 recvfrom(9, 0x2c49954, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.594440 poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=13, events=POLLIN}, {fd=15, events=POLLIN}, {fd=7, events=POLLIN}, {fd=16, events=POLLIN}, {fd=20, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}], 10, 0) = 0 (Timeout)
[pid 26396] 1359214201.594592 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.594783 recvfrom(7, 0x2bc2b44, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26396] 1359214201.594963 recvfrom(9, 0x2c49954, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)

Polling something with 0ms timeout looks like CPU waste, 47...48ms delay looks like some timer, that fires 200 times a second.

lsof says, that these FDs are some unix sockets.

everpad 26396 darkk    7u  unix 0x0000000000000000      0t0 2501643 socket
everpad 26396 darkk    8u  unix 0x0000000000000000      0t0 2501644 socket
everpad 26396 darkk    9u  unix 0x0000000000000000      0t0 2500477 socket

GDB backtrace may be useful:

(gdb) thread apply all bt

Thread 7 (Thread 0x7fb10f7ff700 (LWP 26400)):
#0  0x00007fb125de5303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007fb123c47d84 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fb123c47ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007fb10f8064ad in ?? () from /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
#4  0x00007fb123c6b645 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007fb1269dde9a in start_thread (arg=0x7fb10f7ff700) at pthread_create.c:308
#6  0x00007fb125df0cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7fb10e9ca700 (LWP 26401)):
#0  0x00007fb125de5303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007fb123c47d84 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fb123c481e2 in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007fb11972b4a6 in ?? () from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#4  0x00007fb123c6b645 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007fb1269dde9a in start_thread (arg=0x7fb10e9ca700) at pthread_create.c:308
#6  0x00007fb125df0cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7fb106d04700 (LWP 26576)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007fb11de4ab2d in ?? () from /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4
#2  0x00007fb11de4ac39 in ?? () from /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4
#3  0x00007fb1269dde9a in start_thread (arg=0x7fb106d04700) at pthread_create.c:308
#4  0x00007fb125df0cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7fb106403700 (LWP 26577)):
#0  0x00007fb125de5303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007fb123c47d84 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fb123c47ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007fb1245a8c16 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#4  0x00007fb1245792bf in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#5  0x00007fb124579548 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#6  0x00007fb12447ab10 in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#7  0x00007fb12447daec in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#8  0x00007fb1269dde9a in start_thread (arg=0x7fb106403700) at pthread_create.c:308
#9  0x00007fb125df0cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7fb10e1c9700 (LWP 26892)):
#0  0x00007fb125de5303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007fb123c47d84 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fb123c47ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007fb1245a8bf6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#4  0x00007fb1245792bf in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#5  0x00007fb124579548 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#6  0x00007fb12447ab10 in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#7  0x00007fb12447daec in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#8  0x00007fb1269dde9a in start_thread (arg=0x7fb10e1c9700) at pthread_create.c:308
#9  0x00007fb125df0cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7fb0b6f09700 (LWP 13566)):
#0  0x00007fb125dea023 in select () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007fb124558fe2 in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#2  0x00007fb12447daec in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#3  0x00007fb1269dde9a in start_thread (arg=0x7fb0b6f09700) at pthread_create.c:308
#4  0x00007fb125df0cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7fb125ae5700 (LWP 26396)):
#0  0x00007fb125de5303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007fb123c47d84 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fb123c47ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007fb1245a8bf6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#4  0x00007fb1221acc1e in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#5  0x00007fb1245792bf in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#6  0x00007fb124579548 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#7  0x00007fb12457e708 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#8  0x00007fb122dca6b5 in ?? () from /usr/lib/python2.7/dist-packages/PySide/QtGui.so
#9  0x0000000000460654 in PyEval_EvalFrameEx ()
#10 0x00000000004602b7 in PyEval_EvalFrameEx ()
#11 0x0000000000467209 in PyEval_EvalCodeEx ()
#12 0x00000000004d0242 in PyEval_EvalCode ()
#13 0x00000000005102bb in ?? ()
#14 0x000000000044a466 in PyRun_FileExFlags ()
#15 0x000000000044a97a in PyRun_SimpleFileExFlags ()
#16 0x000000000044b6bc in Py_Main ()
#17 0x00007fb125d1e76d in __libc_start_main (main=0x44b77b <main>, argc=2, ubp_av=0x7fffcefd1798, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffcefd1788) at libc-start.c:226
#18 0x00000000004ce0ad in _start ()
(gdb) quit
darkk commented 11 years ago

And finally it crashed with SIGSEGV in PySide::SignalManager::retrieveMetaObject() with NULL-pointer dereference.

Seems, it works with proper 0% CPU usage after restart.

ghost commented 11 years ago

I get 98% CPU usage when the dash is open on 12.04 (fully up-to-date). It settles back down to 0 soon afterwards.