Michael Brusser <michael@synchronicity.com> writes:
> (dbx) where 30
> =>[1] pfree(0x489420, 0xffbee890, 0x489420, 0xffbee880, 0x489628,
> 0xffbee888), at 0x2535e4
> [2] convert_to_scalar(0x489078, 0x19, 0xffbee890, 0x489008, 0x488fc0,
> 0x413), at 0x1fc6b4
> [3] scalarineqsel(0x484608, 0x42a, 0x0, 0x488a88, 0x489078, 0x19), at
> 0x1f94e4
Hmm. Are you running the database in a non-C locale? (pg_controldata
would tell you.) If so, this pfree is trying to pfree one of three
strings that were filled with strxfrm().
I am wondering if strxfrm() on your platform sometimes writes more bytes
than it is supposed to. I have seen vsnprintf() overrun its output
buffer on some flavors of Solaris (according to FAQ_Solaris, the 64-bit
libc in Solaris 7 had such a problem). Could there be a similar bug in
their strxfrm?
regards, tom lane