Well,
remember that the core dump was from a Mac system on which glib crashes. The 
same app does not crash on most systems, including mine.
I just ran the app on gdb on my system, and disassembled the same function 
(before running the program). This showed to the same instructions as in the 
core dump. And this does not crash on my machine…

0x039894aa <thread_memory_from_self+169>:       jne    0x398958b 
<thread_memory_from_self+394>
0x039894b0 <thread_memory_from_self+175>:       mov    0xa41b5(%ebx),%eax
0x039894b6 <thread_memory_from_self+181>:       mov    %eax,0xa479d(%ebx)
0x039894bc <thread_memory_from_self+187>:       lds    (bad),%edi
0x039894bd <thread_memory_from_self+188>:       sti    
0x039894be <thread_memory_from_self+189>:       adc    %al,0xa41ad(%ebx)
0x039894c4 <thread_memory_from_self+195>:       lds    (bad),%edi
0x039894c5 <thread_memory_from_self+196>:       sti    
0x039894c6 <thread_memory_from_self+197>:       adc    %eax,0xa4795(%ebx)
0x039894cc <thread_memory_from_self+203>:       lds    (bad),%edi
0x039894cd <thread_memory_from_self+204>:       sti    
0x039894ce <thread_memory_from_self+205>:       adc    %al,0xa41a5(%ebx)
0x039894d4 <thread_memory_from_self+211>:       lds    (bad),%edi

I ran the program on my machine, and stepped through the 
thread_memory_from_self function. The "faulty" lds instructions do get executed…

1: x/i $pc  0x34894a5 <thread_memory_from_self+164>:    lea    -0x1(%eax),%ecx
(gdb) 
0x034894a8 in thread_memory_from_self ()
1: x/i $pc  0x34894a8 <thread_memory_from_self+167>:    test   %ecx,%eax
(gdb) 
0x034894aa in thread_memory_from_self ()
1: x/i $pc  0x34894aa <thread_memory_from_self+169>:    jne    0x348958b 
<thread_memory_from_self+394>
(gdb) 
0x034894b0 in thread_memory_from_self ()
1: x/i $pc  0x34894b0 <thread_memory_from_self+175>:    mov    
0xa41b5(%ebx),%eax
(gdb) 
0x034894b6 in thread_memory_from_self ()
1: x/i $pc  0x34894b6 <thread_memory_from_self+181>:    mov    
%eax,0xa479d(%ebx)
(gdb) 
0x034894bc in thread_memory_from_self ()
1: x/i $pc  0x34894bc <thread_memory_from_self+187>:    lds    (bad),%edi
(gdb) 
0x034894c4 in thread_memory_from_self ()
1: x/i $pc  0x34894c4 <thread_memory_from_self+195>:    lds    (bad),%edi
(gdb) 
0x034894cc in thread_memory_from_self ()
1: x/i $pc  0x34894cc <thread_memory_from_self+203>:    lds    (bad),%edi
(gdb) 
0x034894d4 in thread_memory_from_self ()
1: x/i $pc  0x34894d4 <thread_memory_from_self+211>:    lds    (bad),%edi
(gdb) 
0x034894dc in thread_memory_from_self ()
1: x/i $pc  0x34894dc <thread_memory_from_self+219>:    lea    
0x5a55e(%ebx),%eax
(gdb) 
0x034894e2 in thread_memory_from_self ()
1: x/i $pc  0x34894e2 <thread_memory_from_self+225>:    mov    %eax,(%esp)
(gdb) 
0x034894e5 in thread_memory_from_self ()
1: x/i $pc  0x34894e5 <thread_memory_from_self+228>:    call   0x34d1a0c 
<dyld_stub_getenv>
(gdb) 
0x034894ea in thread_memory_from_self ()
1: x/i $pc  0x34894ea <thread_memory_from_self+233>:    test   %eax,%eax


Am I thinking right ?
Thank you


Le 21 août 2013 à 13:57, David Henningsson <di...@ubuntu.com> a écrit :

> I think this memory are not meant to be interpreted as instructions. It
> might be a table, a string, or something else.
> 
> I think you're either looking at a compiler bug, or the memory gets
> overwritten somehow.

_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to