Re: compiler warning

Bruce Momjian <bruce@momjian.us>

From: Bruce Momjian <bruce@momjian.us>
To: Magnus Hagander <magnus@hagander.net>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2011-02-05T04:28:57Z
Lists: pgsql-hackers

Attachments

Magnus Hagander wrote:
> On Thu, Feb 3, 2011 at 04:40, Bruce Momjian <bruce@momjian.us> wrote:
> > I am seeing the following compiler warning for the past few days:
> >
> > ? ? ? ?basebackup.c:213: warning: variable `ptr' might be clobbered by
> > ? ? ? ?`longjmp' or `vfork'
> >
> > and I see this comment in the file:
> >
> > ? ? ? ?/*
> > ? ? ? ? * Actually do a base backup for the specified tablespaces.
> > ? ? ? ? *
> > ? ? ? ? * This is split out mainly to avoid complaints about "variable might be
> > ? ? ? ? * clobbered by longjmp" from stupider versions of gcc.
> > ? ? ? ? */
> >
> > Seems that isn't working as expected. ?I am using:
> >
> > ? ? ? ?gcc version 2.95.3 20010315 (release)
> >
> > with -O1.
> 
> This is the same warning Tom fixed earlier. I have no idea what
> actually causes it :(
> 
> I think it's somehow caused by the PG_ENSURE_ERROR_CLEANUP  stuff.
> Does it go away if you break everything inside the if
> (opt->includewal) into it's own function? (Or at least everything
> except the pq_putemptymessage() call, because moving that would make
> the code very confusing)

I added the attached C comment so we know why the warning is generated. 
We can remove it later if we want, but I want to have it if we get
reports about 9.1 problems.

-- 
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +