Re: pg_verify_checksums and -fno-strict-aliasing
Fabien COELHO <coelho@cri.ensmp.fr>
From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Michael Banck <michael.banck@credativ.de>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2018-08-30T11:25:14Z
Lists: pgsql-hackers
> I noticed that pg_verify_checksums computes bogus checksums if I compile > it with '-O2 -Wall' but without -fno-strict-aliasing. Also I am getting > a compile warning then: > > [...] > > If I add -fno-strict-aliasing to $CFLAGS, the problem goes away. > > Is this something to worry about, or just pilot error cause I am not > using the same $CFLAGS as for the rest of the build? I originally > noticed this problem with my external fork of pg_verify_checksums. It looks like the code is using aliasing where the standard says it should not, which breaks compiler optimization, and the added options tells the compiler to not assume that the code conforms to the standard... As PostgreSQL source is expected to conform to some C standard (unsure which one right now, possibly c89 but maybe it is beginning to switch to c99, a young 19 years old standard), I'd suggest that the right fix is rather to actually remove the aliasing issue. -- Fabien.
Commits
-
Avoid using potentially-under-aligned page buffers.
- 44cac9346479 12.0 landed
- 5af055ed7446 9.3.25 landed
- f5c93cf92223 11.0 landed
- 826980424538 9.6.11 landed
- 10b9af3ebbed 10.6 landed
- 083d9ced14e4 9.4.20 landed
- 03ffe5553c1d 9.5.15 landed
-
Code review for pg_verify_checksums.c.
- d787af7badfe 11.0 landed
- d9c366f9e801 12.0 landed
-
Make checksum_impl.h safe to compile with -fstrict-aliasing.
- db87d3b5253f 9.3.25 landed
- 20f9cd55dd53 9.4.20 landed
- 853af991e35a 9.5.15 landed
- d6ef17ed7bba 9.6.11 landed
- c2dfbd18ce25 10.6 landed
- 9daff2fe69dc 11.0 landed
- 8c62d9d16f01 12.0 landed