lkml.org 
[lkml]   [2000]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [User-mode-linux-user] Ptrace broken since 2.4.0-test8pre4?...
Hello Jeff,

I tested vanilla test7 with ptrace() patch.
It breaks uml exactly like I see with any kernel > test7.

Seems like the ORIG_EAX != -1 is needed to correctly restart syscall
after PTRACE_SYSCALL, but I did not check this codepath thoroughly.

Following what is going with uml, just for the very first exec:

[lots of trap_user.c:228, trap_user.c:149 skipped]

start_syscall():
process.c:181 ptrace(PTRACE_GETREGS, 4901, 0, 501242c0) = 0

finish_exec():
exec_user.c:26 ptrace(PTRACE_POKEUSER, 4901, UESP, bf7fff20) = 0
exec_user.c:27 ptrace(PTRACE_POKEUSER, 4901, EIP, 400019a0) = 0
exec_user.c:28 ptrace(PTRACE_POKEUSER, 4901, EDX, 0) = 0
exec_user.c:29 ptrace(PTRACE_SYSCALL, 4901, 0, 0) = 0

And voila, we got SIGSEGV instead of happy running child:
Child 4901 exited with signal 11

> Have you tried putting that ptrace patch into test7 and seeing if UML stops
> working with that as the host?
>
> test8 is a known bad platform for UML, so I'm going to consider that the
> ptrace patch is OK unless it's possible to turn a good host into a bad one by
> adding that ptrace fix.


--- v2.4.0-test7/linux/arch/i386/kernel/ptrace.c Fri Jun 23 21:55:07 2000
+++ linux/arch/i386/kernel/ptrace.c Sat Sep 2 12:00:02 2000
@@ -99,6 +99,11 @@
case EFL:
value &= FLAG_MASK;
value |= get_stack_long(child, EFL_OFFSET) & ~FLAG_MASK;
+ break;
+ case EIP:
+ /* Mark us as not being in a system call, so that no restart issues happen
*/
+ put_stack_long(child, 4*ORIG_EAX - sizeof(struct pt_regs), -1);
+ break;
}
if (regno > GS*4)
regno -= 2*4;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:38    [W:3.073 / U:0.000 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site