[Bugs] #4061 sugar-toolkit-gtk3 IMME: Global gesture: can crash Sugar under certain circumstances

Sugar Labs Bugs bugtracker-noreply at sugarlabs.org
Tue Oct 23 13:34:06 EDT 2012


#4061: Global gesture: can crash Sugar under certain circumstances
-----------------------------------+----------------------------------------
    Reporter:  erikos              |          Owner:  erikos  
        Type:  defect              |         Status:  new     
    Priority:  Immediate           |      Milestone:  0.98    
   Component:  sugar-toolkit-gtk3  |        Version:  0.97.x  
    Severity:  Blocker             |       Keywords:          
Distribution:  OLPC                |   Status_field:  Assigned
-----------------------------------+----------------------------------------

Comment(by dsd):

 Yes, its an X crash. I got this trace with debuginfo installed:

 {{{

 (gdb) bt
 #0  0xb6a4ee38 in raise () from /lib/libc.so.6
 #1  0xb6a50478 in abort () from /lib/libc.so.6
 #2  0xb6a8b4e0 in ?? () from /lib/libc.so.6
 #3  0xb6a91c08 in ?? () from /lib/libc.so.6
 #4  0xb6a94788 in ?? () from /lib/libc.so.6
 #5  0xb6a97428 in calloc () from /lib/libc.so.6
 q
 #6  0x0013a9b4 in ProcXIQueryPointer (client=0x3961c8) at
 xiquerypointer.c:153
 #7  0x0013011c in ProcIDispatch (client=<optimized out>) at extinit.c:406
 #8  0x000388b8 in Dispatch () at dispatch.c:428
 #9  0x00028138 in main (argc=8, argv=0x28138 <main+1052>, envp=<optimized
 out>)
     at main.c:295
 }}}

 The crash site (calloc) plus the fact that the other trace I took being
 different agrees - this must be some kind of memory corruption.

 To stop X restarting you can do:
 {{{
  systemctl stop olpc-dm.service
 }}}

 To start X just once via the normal display-manager path (integrating with
 PAM and all that):
 {{{
 olpc-dm
 }}}

 To run Sugar in a more bare bones environment:
 {{{
 X # on one terminal
 DISPLAY=:0 sugar-session # on another terminal
 }}}
 (I can't reproduce the crash under that environment)

 Running X under valgrind doesn't seem like it is going to work on ARM.
 Take a simple test:
 {{{
 bash-4.2# valgrind X
 ==2638== Memcheck, a memory error detector
 ==2638== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
 ==2638== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
 ==2638== Command: X
 ==2638==
 disInstr(arm): unhandled instruction: 0xECECA102
                  cond=14(0xE) 27:20=206(0xCE) 4:4=0 3:0=2(0x2)
 ==2638== valgrind: Unrecognised instruction at address 0x4018638.
 ==2638==    at 0x4018638: ??? (in /usr/lib/ld-2.16.so)
 ==2638== Your program just tried to execute an instruction that Valgrind
 ==2638== did not recognise.  There are two possible reasons for this.
 ==2638== 1. Your program has a bug and erroneously jumped to a non-code
 ==2638==    location.  If you are running Memcheck and you just saw a
 ==2638==    warning about a bad jump, it's probably your program's fault.
 ==2638== 2. The instruction is legitimate but Valgrind doesn't handle it,
 ==2638==    i.e. it's Valgrind's fault.  If you think this is the case or
 ==2638==    you are not sure, please let us know and we'll try to fix it.
 ==2638== Either way, Valgrind will now raise a SIGILL signal which will
 ==2638== probably kill your program.
 }}}

 Maybe you will have more luck debugging this on your development machine
 (x86, I assume).

-- 
Ticket URL: <http://bugs.sugarlabs.org/ticket/4061#comment:4>
Sugar Labs <http://sugarlabs.org/>
Sugar Labs bug tracking system


More information about the Bugs mailing list