This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 2/3] skip_prolgoue (amd64)
- From: Yao Qi <yao at codesourcery dot com>
- To: Pedro Alves <palves at redhat dot com>
- Cc: Mark Kettenis <mark dot kettenis at xs4all dot nl>, <gdb-patches at sourceware dot org>
- Date: Mon, 2 Dec 2013 15:32:50 +0800
- Subject: Re: [PATCH 2/3] skip_prolgoue (amd64)
- Authentication-results: sourceware.org; auth=none
- References: <1385735051-27558-1-git-send-email-yao at codesourcery dot com> <1385735051-27558-3-git-send-email-yao at codesourcery dot com> <201311291436 dot rATEaZ5Z030292 at glazunov dot sibelius dot xs4all dot nl> <201311291605 dot rATG5XVb030184 at glazunov dot sibelius dot xs4all dot nl> <52994E79 dot 4000004 at codesourcery dot com> <5299B9D0 dot 2020304 at redhat dot com>
On 11/30/2013 06:11 PM, Pedro Alves wrote:
It seems like we can "dangerously" hit stale cache (probably most
visible with non-stop mode) between target events:
#1 - all threads set running, dcache is invalidated
#2 - thread 1 stops. As we handle the event, we read code, and cache it.
#3 - others threads continue running. some thread jits something, or
changes code that was cached.
#4 - thread 2 stops. As we handle the event, we read code, hitting
stale cache.
Yeah, that is a valid case to me.
I'm thinking we might need to flush the dcache before handling each
event, like we already invalidate the overlay cache (see
"overlay_cache_invalid = 1" in infrun.c) ?
I don't know why overlay cache is flushed in each event. Doing some
archaeology doesn't give me any clue. I doubt that the overly may
change between any two events. It (flushing overlay cache) looks not
necessary to me, at least, when overlay events breakpoint is enabled.
GDB target cache contains both code cache and stack cache. GDB can
know the JIT event by means of jit event breakpoint, but GDB can't know
whether a thread's stack is modified (by other threads). So we have
to flush target cache before handling *every* event :-/ I'll send a
follow-up patch.
--
Yao (éå)