From: Falko S. <kae...@st...> - 2006-11-24 22:54:00
|
[...] > > > Now that I've got E17 running, I noticed that it recieves no > > > keyboard input at all (e.g. in the 'run command' dialog or and other > > > widget) although input works for applications run inside E17 (e.g. > > > xterm). I'll investigate a bit more, but maybe someone out there > > > already knows how to deal with it. > > > > weird again. never seen this problem before. > > > I've used xnest to investigate the error some more. It seems that the > segfault is caused by _grab_key_down_cb (bt follows). > > One thing to note is that modifier keys as well as backspace and cursor > keys work in the input widgets - but pressing any other character > doesn't have any effect. > > Next is that if I specify a key binding with "enlightenment_remote > -binding-key-add" it works. > > Producing a backtrace with gdb wasn't very successful because after > adding debugging symbols to E17, gdb complained about the stack being > corrupted. However using mdb I've got the following results: > > ESTART: 29.85751 [6.89135] - SLEEP > mdb: stop on SIGSEGV > mdb: target stopped at: > libc.so.1`strlen+0x50: ld [%o2], %o1 > mdb: You've got symbols! > Loading modules: [ ld.so.1 libc.so.1 libuutil.so.1 ] > > $c > libc.so.1`strlen+0x50(1835c5, ffbcd6d4, 57c3d9, 0, 0, 0) > libc.so.1`printf+0xf4(1835b8, 1a4608, 0, 1a4626, fe8e8284, 2ff770) > _grab_key_down_cb+0x148(296438, a, 2ff770, 1db038, 1db038, 588b48) > libecore.so.1.0.0`_ecore_event_call+0x36c(0, 20000000, 2f08c, ff3ee0f8, > 0, > ff06a248) > libecore.so.1.0.0`_ecore_main_loop_iterate_internal+0x82c(0, 6, > ffffffd1, 1, > fe8f0527, ff06a248) > libecore.so.1.0.0`ecore_main_loop_begin+0x54(2f, 1a4608, 0, 1a4626, > fe8e8284, > 1a2b68) > main+0x54d8(1, ffbff204, ffbff20c, 1a4a9c, fecf0140, fecf0180) > _start+0x5c(0, 0, 0, 0, 0, 0) > > ::status > debugging PID 13681 (32-bit) > file: /usr/local/bin/enlightenment > threading model: multi-threaded > status: stopped on SIGSEGV (Segmentation Fault) > event: stop on SIGSEGV > > > Just for convenience, here's the bt output from gdb: > > ESTART: 1.86219 [0.11480] - SLEEP > > Program received signal SIGSEGV, Segmentation fault. > 0xfe830c90 in strlen () from /lib/libc.so.1 > (gdb) bt > #0 0xfe830c90 in strlen () from /lib/libc.so.1 > #1 0xfe896258 in _ndoprnt () from /lib/libc.so.1 > #2 0xfe898404 in printf () from /lib/libc.so.1 > #3 0x00100c30 in ?? () > #4 0x00100c30 in ?? () > Previous frame identical to this frame (corrupt stack?) > > > And another one with gdb, just without symbols: > > #0 0xfe830c90 in strlen () from /lib/libc.so.1 > #1 0xfe896258 in _ndoprnt () from /lib/libc.so.1 > #2 0xfe898404 in printf () from /lib/libc.so.1 > #3 0x00100c30 in _grab_key_down_cb () > #4 0xff046e60 in _ecore_event_call () from /usr/local/lib/libecore.so.1 > #5 0xff052004 in _ecore_main_loop_iterate_internal () > from /usr/local/lib/libecore.so.1 > #6 0xff0506d8 in ecore_main_loop_begin () from > /usr/local/lib/libecore.so.1 > #7 0x0002f094 in main () > > Please tell me if you need more details or another kind of bt. > > Falko I've investigated some more. The segfault is caused by ev->key_compose in the printf statement in the function _grab_key_down_cb. If I remove only that part and make the line look like: printf("'%s' '%s'\n", ev->keyname, ev->keysymbol ); E17 won't segfault while grabbing the key. That doesn't solve the problem though. Still, I can't get any text entry widget to reflect any kind of keypresses except cursor keys, backspace and delete, at least it doesn't segfault there (never did). Is there a way to find out the reason for this problem? I'm not really understand too much about X internals, but it might be a Xsun issue or the way Xsun handles key events. Maybe adding some extra treatment to XLookupKeysym. I'll come back if I find out more. Falko |