Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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 --]

      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