Re: [HACKERS] Postgres dies in the rules regression test (64-bit problem)

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Pedro J(dot) Lobo" <pjlobo(at)euitt(dot)upm(dot)es>
Cc: PostgreSQL hackers mailing list <pgsql-hackers(at)postgreSQL(dot)org>
Subject: Re: [HACKERS] Postgres dies in the rules regression test (64-bit problem)
Date: 1999-06-11 13:38:09
Message-ID: 12055.929108289@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

"Pedro J. Lobo" <pjlobo(at)euitt(dot)upm(dot)es> writes:
> I have located the point where the pointer is overwritten.

> *nodePtr = copyObject(n);
> ((Var *) *nodePtr)->varlevelsup = this_varlevelsup;

> Well, this *can't* be correct. 'n' points to a node of type Expr,

Good sleuthing! It looks like on a 32-bit machine, the overwritten
area will be just past the last field that's part of Expr, and because
of the memory manager's habit of rounding up object sizes that area
just happens to be available space rather than the start of the next
object. So that's why we hadn't found it before.

I believe the copied TLE entry could be any of several other node types
besides Var and Expr, so it's probably possible to see related failures
even on a 32-bit machine.

Jan, what should really be happening here?

regards, tom lane

Browse pgsql-hackers by date

  From Date Subject
Next Message Horak Daniel 1999-06-11 13:43:19 missing #endif in win32 specific headers
Previous Message Dmitry Samersoff 1999-06-11 13:15:57 Client