[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] Solaris edje troubles



On Sat, Nov 25, 2006 at 10:31:58PM +0900, Carsten Haitzler wrote:
> On Fri, 24 Nov 2006 23:57:26 +0100 Falko Schmidt
> <kaethorn@stud.uni-stuttgart.de> babbled:
> 
> > [...]
> > > > > 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 );
> 
> looks like solaris's printf doesnt handle null strings ala glibc - easy to fix.
>
Thanks a lot! :)

> > 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?
> 
> well my guess is you need to put some debugging in e_entry.c in the 
> _e_entry_key_down_windows() and _e_entry_key_down_emacs() at the end where they
> handle generic key down events and look at the event string - see what it is
> (event->string) and why that logic may be failing.
> 
Will do so and report back.

Thanks again,

Falko