From: Eliot M. <mo...@cs...> - 2004-04-01 21:58:01
|
>>>>> "Sergiy" == Sergiy Kyrylkov <se...@cs...> writes: Sergiy> Eliot, Sergiy> I found the correct value: Sergiy> ...................... Sergiy> Program received signal SIGSEGV, Segmentation fault. Sergiy> 0x0000000060226a88 in ?? () Sergiy> (gdb) c Sergiy> Continuing. Sergiy> Breakpoint 1, getLinuxSavedContext(int, void*) (signum=11, Sergiy> arg3=0x1ffffffeeb0) Sergiy> at libvm.C:209 Sergiy> 209 return &((ucontext_t*)arg3)->uc_mcontext; Sergiy> (gdb) x/128xg arg3 Sergiy> 0x1ffffffeeb0: 0x0000000000000000 0x0000000000000000 Sergiy> 0x1ffffffeec0: 0x000001ffffffd628 0x0000000000000000 Sergiy> ........................ Sergiy> ........................ Sergiy> ........................ Sergiy> 0x1fffffff0e0: 0xffffffffffffffe8 0x0000000000200000 Sergiy> Now the question is how do we extract it correctly? I took a quick look, and it appears that the ucontext, sigcontext, and ptrace .h files (the latter ultimately in /usr/include/asm-ppc64, but "redirected" multiple levels) hold the key. I think that casting arg3 properly and following links / extracting fields in it properly will work. And perhaps the get_context functions actually work and all now. Can you dig into all that a little bit more? -- Eliot |