Xglamo loops and hangs (and crashed before)

Harald Koenig koenig at tat.physik.uni-tuebingen.de
Tue Aug 26 20:16:50 CEST 2008


On Aug 26, Holger Freyther wrote:

> You should be able to install xserver-kdrive-glamo-dbg on the device to get 

thanks

> the debug symbols. As for debugging... we would need to know for which 
> command it is waiting to empty and which commands were executed before. We do 
> not yet keep track of that... and maybe it is time to keep a small ringbuffer 
> of the last used commands.. and flush it somewhere on a kill...

dump question: does the -dbg ipk really match the installed Xserver ?
at least the time stamps don't match:

   root at om-gta02:~# ls -l /usr/bin/Xglamo  /usr/bin/.debug/Xglamo 
   -rwxr-xr-x    1 root     root       250059 Aug 18 08:17 /usr/bin/.debug/Xglamo
   -rwxr-xr-x    1 root     root      1072188 Aug 11 19:35 /usr/bin/Xglamo

but: 
   root at om-gta02:~# opkg list_installed | grep glamo
   xserver-kdrive-glamo - 1:1.3.0.0+git2839+4067470ea4d569bae7b4161ca998645a0c9b96e7-r6 - 
   xserver-kdrive-glamo-dbg - 1:1.3.0.0+git2839+4067470ea4d569bae7b4161ca998645a0c9b96e7-r6 - 


lots of symbols "do not work", e.g.:

     (gdb) x/i WaitForSomething
     No symbol "WaitForSomething" in current context.

but:
     harald om > nm .debug/Xglamo | grep WaitForSomething
     000ed7f8 T WaitForSomething

that symbol shows up here (0x000edd44 is within WaitForSomething()):

     (gdb) where
     #0  0x000f5bb8 in GetTimeInMillis ()
     #1  0x000edd44 in ?? ()

or here from UpdateCurrentTimeIf():

     (gdb) where
     #0  0x000f5bbc in GetTimeInMillis ()
     #1  0x000384a4 in ?? ()

     (gdb) x UpdateCurrentTimeIf
     No symbol "UpdateCurrentTimeIf" in current context.

     harald om > nm Xglamo | grep UpdateCurrentTimeIf     
     00038488 T UpdateCurrentTimeIf


doing single-stepping I only see GetTimeInMillis() calling gettimeofday().
but from gettimeofday() stepping does not work and I only get back 
to gdb at the breakpoint of GetTimeInMillis  (I've tried to set breakpoints
to every text symbol in .debug/Xglamo, but I only got ~350 break points
out of 3314 symbols -- all other symbols are "unknown", strange :-(

any idea what's the problem with all those missing symbols in gdb ?


here is a full cycle of single stepping:

-------------------------------------------------------------------------------
...
Breakpoint 259, 0x000f5bb8 in GetTimeInMillis ()
6: x/i $pc  0xf5bb8 <GetTimeInMillis>:  stmdb   sp!, {r4, lr}
(gdb) 
(gdb) si
0x000f5bbc in GetTimeInMillis ()
6: x/i $pc  0xf5bbc <GetTimeInMillis+4>:        sub     sp, sp, #8      ; 0x8
(gdb) 
0x000f5bc0 in GetTimeInMillis ()
6: x/i $pc  0xf5bc0 <GetTimeInMillis+8>:        mov     r1, #0  ; 0x0
(gdb) 
0x000f5bc4 in GetTimeInMillis ()
6: x/i $pc  0xf5bc4 <GetTimeInMillis+12>:       mov     r0, sp
(gdb) 
0x000f5bc8 in GetTimeInMillis ()
6: x/i $pc  0xf5bc8 <GetTimeInMillis+16>:       bl      0x12048 <gettimeofday>
(gdb) 
0x00012048 in ?? ()
6: x/i $pc  0x12048 <gettimeofday>:     add     r12, pc, #1048576       ; 0x100000
(gdb) 
0x0001204c in ?? ()
6: x/i $pc  0x1204c <gettimeofday+4>:   add     r12, r12, #0    ; 0x0
(gdb) 
0x00012050 in ?? ()
6: x/i $pc  0x12050 <gettimeofday+8>:   ldr     pc, [r12, #1144]!
(gdb) 
0x401f88a0 in gettimeofday () from /lib/libc.so.6
6: x/i $pc  0x401f88a0 <gettimeofday>:  mov     r12, r7
(gdb) 
0x401f88a4 in gettimeofday () from /lib/libc.so.6
6: x/i $pc  0x401f88a4 <gettimeofday+4>:        mov     r7, #78 ; 0x4e
(gdb) 
0x401f88a8 in gettimeofday () from /lib/libc.so.6
6: x/i $pc  0x401f88a8 <gettimeofday+8>:        svc     0x00000000
(gdb) 
0x401f88ac in gettimeofday () from /lib/libc.so.6
6: x/i $pc  0x401f88ac <gettimeofday+12>:       mov     r7, r12
(gdb) 
0x401f88b0 in gettimeofday () from /lib/libc.so.6
6: x/i $pc  0x401f88b0 <gettimeofday+16>:       cmn     r0, #4096       ; 0x1000
(gdb) 
0x401f88b4 in gettimeofday () from /lib/libc.so.6
6: x/i $pc  0x401f88b4 <gettimeofday+20>:       bxcc    lr
(gdb) 

[ ... short delay ... ]

Breakpoint 259, 0x000f5bb8 in GetTimeInMillis ()
6: x/i $pc  0xf5bb8 <GetTimeInMillis>:  stmdb   sp!, {r4, lr}
(gdb) 
0x000f5bbc in GetTimeInMillis ()
6: x/i $pc  0xf5bbc <GetTimeInMillis+4>:        sub     sp, sp, #8      ; 0x8
(gdb) 
-------------------------------------------------------------------------------



final info: unfortuneately Xglamo crashed within gdb, so no more testing with this instance, sorry.
but still I'd like to unterstand those symbol issues etc. to be prepared for the next problem...

the final words of there Xserver were:

    root at om-gta02:~# tail  /var/volatile/tmp/x.log
    ...
    End listing directory: /home/root/.e/e/appshadow
    ........

    xinit:  X server slow to shut down, sending KILL signal.


if you can provide a Xglamo image with some additional debug hooks and
command ring buffer etc. I'm happy to use/test it just in case...

thanks for your help!


Harald
-- 
"I hope to die                                      ___       _____
before I *have* to use Microsoft Word.",           0--,|    /OOOOOOO\
Donald E. Knuth, 02-Oct-2001 in Tuebingen.        <_/  /  /OOOOOOOOOOO\
                                                    \  \/OOOOOOOOOOOOOOO\
                                                      \ OOOOOOOOOOOOOOOOO|//
                                                       \/\/\/\/\/\/\/\/\/
Harald Koenig                                           //  /     \\  \
koenig at tat.physik.uni-tuebingen.de                     ^^^^^       ^^^^^



More information about the devel mailing list