radekp/qtmoko — Issue #6: crash after theme change
Author: tiagovaz
Created: 2011-12-19 16:24:40+00:00
State: open

Converted from [SourceForge issue 3363883](http://sourceforge.net/support/tracker.php?aid=3363883), submitted by buergi

Everytime I close the Appearance dialog in v35, even if no changes were made, qtmoko crashes. It shows a little underscore on the upper left of the screen.
SSH access still possible. syslog says:
Jul 12 07:33:35 neo Qtopia: QObject::startTimer: QTimer can only be used with threads started with QThread
Jul 12 07:33:35 neo last message repeated 3 times
Jul 12 07:33:35 neo Qtopia: Semop lock failure Invalid argument
Jul 12 07:33:35 neo Qtopia: Semop unlock failure Invalid argument
Jul 12 07:33:35 neo Qtopia: ApplicationLayer: Application layer server unexpectedly terminated.

After a /etc/init.d/qtmoko restart the phone is usable again.
I tried multiple reboots, different themes (finxi, AsthroMod, faengo installed).

I ran qpe through strace which gave me
rt_sigaction(SIGILL, {SIG_DFL, [ILL], SA_RESTART|0x4000000}, {0x40c95a18, [ILL], SA_RESTART|0x4000000}, 8) = 0
semctl(983040, 0, IPC_64|IPC_RMID, 0) = 0
...
semctl(1179660, 0, IPC_64|IPC_RMID, 0) = -1 EINVAL (Invalid argument)
...

gdb tells some strange happen in libfingerkeyboard:

Program received signal SIGPIPE, Broken pipe.
0x409240f4 in write () from /lib/libpthread.so.0
(gdb) continue
Continuing.
[New Thread 0x45ae4460 (LWP 1493)]

Program received signal SIGILL, Illegal instruction.
0x002f321c in ?? ()
(gdb) bt
#0 0x002f321c in ?? ()
#1 0x44f494a4 in KeyboardFrame::LoadSkinPics(QString) () from /opt/qtmoko/plugins/inputmethods/libfingerkeyboard.so
#2 0x44f4a410 in KeyboardFrame::LoadSkin() () from /opt/qtmoko/plugins/inputmethods/libfingerkeyboard.so
#3 0x44f4cc84 in KeyboardFrame::KeyboardFrame(QWidget*, QFlags) () from /opt/qtmoko/plugins/inputmethods/libfingerkeyboard.so
#4 0x44f3cba4 in Keyboard::Keyboard(QWidget*, QFlags) () from /opt/qtmoko/plugins/inputmethods/libfingerkeyboard.so
#5 0x44f460c0 in KeyboardInputMethod::inputWidget(QWidget*) () from /opt/qtmoko/plugins/inputmethods/libfingerkeyboard.so
#6 0x00227f6c in InputMethods::loadInputMethods() ()
#7 0x0022852c in InputMethods::InputMethods(QWidget*, QFlags, InputMethods::IMType) ()
#8 0x002285cc in ?? ()
#9 0x002285cc in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

I have no idea what's going on here and i have no idea for further information sources, so hopefully this is enough to find the bug.