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
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 |