From: Corinna Vinschen <vinschen@redhat.com>
To: gdb-patches@sourceware.org
Subject: Re: [patch/cygwin] Remove dependency on __COPY_CONTEXT_SIZE
Date: Wed, 01 Apr 2015 11:53:00 -0000 [thread overview]
Message-ID: <20150401115307.GS13285@calimero.vinschen.de> (raw)
In-Reply-To: <551BCC1E.90306@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2310 bytes --]
On Apr 1 11:44, Pedro Alves wrote:
> On 03/31/2015 07:32 PM, Corinna Vinschen wrote:
> > On Mar 31 17:30, Pedro Alves wrote:
> >> I think it's bad to hard code
> >> the size of the CONTEXT structure, but won't argue further. Patch
> >> is OK if you'd really like to apply it as is.
> >
> > Thanks. But incidentally I retract the patch. It seems we made a
> > mistake both, on 32 and 64 bit Cygwin as far as the definition of
> > __COPY_CONTEXT_SIZE is concerned. Changing that to sizeof(CONTEXT) now
> > would potentially break backward compatibility with all Cygwin versions
> > up to today. Oh well.
>
> Not sure I understand what you mean, but OK.
I was a bit unclear, sorry. What I was trying to say is this.
Only yesterday in a discussion on IRC it turned out that the definition
of __COPY_CONTEXT_SIZE was never identical to sizeof(CONTEXT). The
definition of __COPY_CONTEXT_SIZE was based on an underlying datatype,
almost, but not quite identical to CONTEXT (i.e. a bug).
As a result, __COPY_CONTEXT_SIZE < sizeof(CONTEXT). Worse, Cygwin
itself up to the current version 1.7.35 (fixed in the git repo) only
stored the leading __COPY_CONTEXT_SIZE bytes of the signal CONTEXT to
internal storage for GDB's digestion.
Assuming we change GDB now to copy sizeof(CONTEXT), and assuming we're
running under a Cygwin <= 1.7.35.
GDB would copy random data following the leading __COPY_CONTEXT_SIZE
bytes of a CONTEXT to its own CONTEXT. Thus, when later calling
SetThreadContext with this data, it would copy random data into the
OSes thread context. Which sounds like a really, really bad idea to
me.
Therefore, for backward compat reasons we should keep this up for a
while, until we decide not to support Cygwin versions <= 1.7.35 in
GDB any longer. Given that only the leading part of the signal
context (actually, basically only the content of Eip/Rip) is really
important here, nothing much is lost.
I hope I could clarify the situation. If you have another idea
how we could handle this a bit..., well, more correct or something,
please do tell.
> > Sorry for the longish discussion for nothing :(
>
> Sounds like it wasn't for nothing then.
Indeed :)
Thanks,
Corinna
--
Corinna Vinschen
Cygwin Maintainer
Red Hat
[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]
prev parent reply other threads:[~2015-04-01 11:53 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-30 10:04 Corinna Vinschen
2015-03-31 12:34 ` Pedro Alves
2015-03-31 14:36 ` Corinna Vinschen
2015-03-31 14:59 ` Pedro Alves
2015-03-31 15:42 ` Corinna Vinschen
2015-03-31 16:30 ` Pedro Alves
2015-03-31 18:32 ` Corinna Vinschen
2015-04-01 10:44 ` Pedro Alves
2015-04-01 11:53 ` Corinna Vinschen [this message]
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=20150401115307.GS13285@calimero.vinschen.de \
--to=vinschen@redhat.com \
--cc=gdb-patches@sourceware.org \
/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