Thread: 800RC1 valgrind-detected bug ?

800RC1 valgrind-detected bug ?

From
strk
Date:
Hi all.
I'm getting error reports from valgrind while debugging postgis.
It seems that the error only shows up when I build a GiST index
AND vacuum analyze.

If I drop the index the error goes away.
If I create the index the error still doesn't show.
If I vacuum analyze, the error is back, but not always.

The query does not involve indexed operators.
Any hint about what can couse this ?

- versions:
valgrind-2.1.2.CVS
psql 8.0.0rc1

==15489== Syscall param write(buf) contains uninitialised or unaddressable byte(
s)
==15489==    at 0x3C1AF9B8: write (in /lib/libc-2.3.2.so)
==15489==    by 0x3C14F67D: (within /lib/libc-2.3.2.so)
==15489==    by 0x3C14F615: _IO_do_write (in /lib/libc-2.3.2.so)
==15489==    by 0x3C150138: _IO_file_overflow (in /lib/libc-2.3.2.so)
==15489==    by 0x3C150D1F: _IO_file_xsputn (in /lib/libc-2.3.2.so)
==15489==    by 0x3C145F8E: _IO_fwrite (in /lib/libc-2.3.2.so)
==15489==    by 0x82062CE: write_relcache_init_file (in /pgroot-800/bin/postgres
)
==15489==    by 0x82130AC: InitPostgres (in /pgroot-800/bin/postgres)
==15489==    by 0x819B16A: PostgresMain (in /pgroot-800/bin/postgres)
==15489==    by 0x813B2E2: main (in /pgroot-800/bin/postgres)
==15489==  Address 0x3C0220F8 is not stack'd, malloc'd or (recently) free'd
==15489==
==15489== Syscall param write(buf) contains uninitialised or unaddressable byte(
s)
==15489==    at 0x3C1AF9B8: write (in /lib/libc-2.3.2.so)
==15489==    by 0x3C14F67D: (within /lib/libc-2.3.2.so)
==15489==    by 0x3C14F615: _IO_do_write (in /lib/libc-2.3.2.so)
==15489==    by 0x3C14EF67: _IO_file_close_it (in /lib/libc-2.3.2.so)
==15489==    by 0x3C144CE9: _IO_fclose (in /lib/libc-2.3.2.so)
==15489==    by 0x8189F4E: FreeDesc (in /pgroot-800/bin/postgres)
==15489==    by 0x820677E: write_relcache_init_file (in /pgroot-800/bin/postgres
)
==15489==    by 0x82130AC: InitPostgres (in /pgroot-800/bin/postgres)
==15489==    by 0x819B16A: PostgresMain (in /pgroot-800/bin/postgres)
==15489==    by 0x813B2E2: main (in /pgroot-800/bin/postgres)
==15489==  Address 0x3C022200 is not stack'd, malloc'd or (recently) free'd

TIA
--strk;


Re: 800RC1 valgrind-detected bug ?

From
Tom Lane
Date:
strk <strk@keybit.net> writes:
> ==15489== Syscall param write(buf) contains uninitialised or unaddressable byte(s)

Valgrind is fairly useless for debugging postgres, because it doesn't
know the difference between alignment-pad bytes in a struct and real
data.  What you've got here is a gripe arising from writing out a
struct containing padding.
        regards, tom lane


Re: 800RC1 valgrind-detected bug ?

From
Oliver Jowett
Date:
Tom Lane wrote:
> strk <strk@keybit.net> writes:
> 
>>==15489== Syscall param write(buf) contains uninitialised or unaddressable byte(s)
> 
> Valgrind is fairly useless for debugging postgres, because it doesn't
> know the difference between alignment-pad bytes in a struct and real
> data.  What you've got here is a gripe arising from writing out a
> struct containing padding.

Is there any risk of leaking sensitive data to a file or the network via 
those uninitialized alignment padding bytes?

-O