Thread: Re: [COMMITTERS] pgsql: Remove ill-considered suppression of gcc warnings in plperl, and

Michael Fuhr <mike@fuhr.org> writes:
> On Wed, Nov 17, 2004 at 09:23:37PM +0000, Tom Lane wrote:
>> Remove ill-considered suppression of gcc warnings in plperl, and fix
>> some of the bugs exposed thereby.

> These changes may not have targeted the problem mentioned in the
> "plperl crashes backend" thread in pgsql-bugs, but I'll report that
> they didn't fix it.

Yeah, I know.  I had just done that in the slight hope that more
warnings would pinpoint the error.  They didn't, but I figured I'd
commit what I had anyway.  I still think there are some broken
combinations exposed by the remaining warnings, but they are not
combinations exercised by the failing test case.

BTW, on my machine your test case does NOT fail if you declare the
function as plperlu instead of plperl.  Same for you?

It's clearly a memory clobber problem; once I got this:

WARNING:  problem in alloc set pg_depend_reference_index: req size > alloc size for chunk 0x94429d0 in block 0x94429c0
WARNING:  problem in alloc set pg_depend_reference_index: bad single-chunk 0x94429d0 in block 0x94429c0
WARNING:  problem in alloc set pg_depend_reference_index: bogus aset link in block 0x94429c0, chunk 0x94429d0
WARNING:  problem in alloc set pg_depend_reference_index: found inconsistent memory block 0x94429c0
WARNING:  problem in alloc set pg_depend_reference_index: found inconsistent memory block 0x94f6918

I have not been able to reproduce that, which is too bad because it
would've provided a place to set a debugger watchpoint and catch the
clobber in the act.

            regards, tom lane
On Wed, Nov 17, 2004 at 08:34:37PM -0500, Tom Lane wrote:

> BTW, on my machine your test case does NOT fail if you declare the
> function as plperlu instead of plperl.  Same for you?

Yep: with plperlu I don't get the crash, neither on FreeBSD nor on
Solaris, at least not for arrays with up to one million elements.

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/