lkml.org 
[lkml]   [2005]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectptrace unexpected SIGTRAP (trace bit) on x86, x86_64 kernel 2.6.13.2
Ptrace is giving unexpected SIGTRAP (trace bit) in kernel 2.6.13.2
on both x86 and x86_64.

The 8-instruction program below just execve()s itself over and over.
When run under gdb, the first user-visible SIGTRAP is expected due to
the 'int3'. But the second user-visible SIGTRAP is unexpected, as
there is no reason to trap.

Changing the line "nop; int3" to "nop; nop" gives a program that
just spins merrily when run under /bin/bash. But gdb sees a SIGTRAP,
with the $pc pointing after the second 'nop'. When run under strace
(strace gdb ./execve; (gdb) run), the process spins merrily with
no unexpected SIGTRAP.


-----execve.S
#include <asm/unistd.h>

/*
gcc -o execve -nostartfiles -nostdlib execve.S
gdb ./execve
run
p/x $ps
# 0x202
c
p/x $ps
# 0x302 TF (0x100) set, but should not be
*/

_start: .globl _start
nop; int3
popl %ebp # argc
movl (%esp),%ebx # same filename from argv[0]
movl %esp,%ecx # same argv
lea 4(%esp,%ebp,4),%edx # same envp
movl $__NR_execve,%eax # here we go 'round the mulberry bush, ...
int $0x80
-----end of execve.S

Previous history, and translation for x86_64 are at:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=144805#c23

--
John Reiser, jreiser@BitWagon.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-09-29 18:00    [W:0.066 / U:1.440 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site