From: Daniel THOMPSON <daniel.thompson@st.com>
To: Daniel Jacobowitz <drow@false.org>
Cc: gdb@sources.redhat.com
Subject: Re: gdbserver, NPTL pthreads and PEEKUSER based targets
Date: Fri, 01 Apr 2005 08:14:00 -0000 [thread overview]
Message-ID: <424D02C8.7040307@st.com> (raw)
In-Reply-To: <20050331155058.GA5547@nevyn.them.org>
Daniel Jacobowitz wrote:
>>Unfortunately the gdbserver bails out inside pthread_create() with an
>>SIGTRAP signal.
>
> That will be an unrelated problem. It sounds like you may need a
> reinsert_addr method.
I not quite sure about this, primarily because the SH4 kernel supports
PTRACE_SINGLESTEP since it has h/ware to assist this.
I turned on debug_threads and it appears to have failed while the
breakpoint was temporarily removed:
| Resuming, no pending status
| Got an event from 342 (57f)
| Hit a (non-reinsert) breakpoint.
| Thread creation event.
| Writing 00 to 29eb2d54
| Writing 00 to 2958b1b8
| Attaching to thread 703277904 (LWP 343)
| Writing 01 to 29eb2d30
| Writing ffffffe6 to 2957c8a0
| Resuming process 342 (step, signal 0, stop not expected)
| pending reinsert at 2957c8a0
| Checking for breakpoint.
| Removed breakpoint.
| Got an event from 343 (5)
| Thread 703277904 (LWP 343) exiting
| Got an event from 342 (5)
| Thread 694887272 (LWP 342) exiting
|
| Child terminated with signal = 5
|
| Child terminated with signal = 0x5
| GDBserver exiting
Running with strace shows the following assuming the debug threads
output and the ptrace output are correctly interleaved (pids have
changed because this is a different gdbserver session):
| Resuming process 309 (step, signal 0, stop not expected)
| pending reinsert at 2957c8a0
| Checking for breakpoint.
| ptrace(PTRACE_PEEKTEXT, 309, 0x2957c8a0, [0x4f222fe6]) = 0
| Removed breakpoint.
| <most of the boring PTRACE_POKEUSERs to keep this mail small>
| ptrace(PTRACE_POKEUSER, 309, 4*REG_PC, 0x2957c8a0) = 0
| ptrace(PTRACE_POKEUSER, 309, 4*REG_PR, 0x2957dc4c) = 0
| ptrace(PTRACE_POKEUSER, 309, 4*REG_GBR, 0x296b27a8) = 0
| ptrace(PTRACE_SINGLESTEP, 309, 0, SIG_0) = 0
| --- SIGCHLD (Child exited) @ 0 (0) ---
| --- SIGCHLD (Child exited) @ 0 (0) ---
| Got an event from 310 (5)
| Thread 703277904 (LWP 310) exiting
| Got an event from 309 (5)
| Thread 694887272 (LWP 309) exiting
This smells to me like a kernel bug in PTRACE_SINGLESTEP. Has the kernel
failed to apply the signal mask?
>>The other oddity I noted is that where the x86 does a
>>PTRACE_ATTACH to LWP pid+4 inside pthread_create(), the SH4 is attaching
>>to LWP pid+1 which does not seem right as this would not be the LWP of
>>the spawned thread.
>
> Why wouldn't it be?
When running an SH4 hosted GDB the lwpid of the spawned thread is always
pid+3 but gdbserver attaches to pid+1. On x86 hosts GDB the lwpid of the
spawned thread is always pid+3 and the gdbserver attaches to pid+4. Now
I realise that the pid offset is different on x86 I guess there's no
reason for it not to be different on x86.
--
Daniel Thompson (STMicroelectronics) <daniel.thompson@st.com>
1000 Aztec West, Almondsbury, Bristol, BS32 4SQ. 01454 462659
If a car is a horseless carriage then is a motorcycle a horseless horse?
next prev parent reply other threads:[~2005-04-01 8:14 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-31 15:43 Daniel THOMPSON
2005-03-31 15:49 ` Daniel Jacobowitz
2005-04-01 8:14 ` Daniel THOMPSON [this message]
2005-04-01 14:08 ` Daniel Jacobowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=424D02C8.7040307@st.com \
--to=daniel.thompson@st.com \
--cc=drow@false.org \
--cc=gdb@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox