Tom Lane wrote:
> Alvaro Herrera <alvhe...@commandprompt.com> writes:

> > But freed memory is clobbered, so if we were to have an assert that
> > checks the node tag, it should show up.  In fact, we do have such an
> > assert, but only for compilers other than GCC, because the inline
> > version of palloc() cannot have it for lack of infrastructure.
> 
> Well, but production installations don't have either memory clobbering
> or Asserts, so fooling with that wouldn't have helped anyway.  I suspect
> what really happened here is that the bug was created by some late
> change during 8.1 development, and nobody ever exercised the
> anti-wraparound code path after that in an assert-enabled build :-(
> In a non-assert build there's a fairly good chance that it'd still
> work because the context header would still be there undamaged.

Well, my builds are all assert-enabled, and I still wasn't able to make
it crash in any way (the new context being allocated in the same
position as the old one is the only explanation I have, but I did not
investigate whether that's what happening).  Maybe Greg Stark's idea of
offsetting pointers returned by palloc could have helped to find the
problem from the outset.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to