Re: Detecting pointer misalignment (was Re: pgsql: Implementation of subscripting for jsonb)
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Thomas Munro <thomas.munro@gmail.com>,
Heikki Linnakangas <hlinnaka@iki.fi>, Alexander Korotkov <akorotkov@postgresql.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-02-12T22:29:43Z
Lists: pgsql-hackers
On Fri, Feb 12, 2021 at 8:19 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > I've updated buildfarm member longfin to use "-fsanitize=alignment > -fsanitize-trap=alignment", and it just got through a run successfully > with that. It'd be good perhaps if some other buildfarm owners > followed suit (mumble JIT coverage mumble). > > Looking around at other recent reports, it looks like we'll need to tweak > the compiler version cutoffs a bit. I see for instance that spurfowl, > with gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609, is whining: > > pg_crc32c_sse42.c:24:1: warning: \342\200\230no_sanitize\342\200\231 attribute directive ignored [-Wattributes] > > So maybe it'd better be __GNUC__ >= 6 not __GNUC__ >= 5. I think > we can wait a little bit for more reports before messing with that, > though. I've rechecked this in the documentation. no_sanitize attribute seems to appear since gcc 8.0. Much later than alignment sanitizer itself. https://gcc.gnu.org/gcc-8/changes.html "A new attribute no_sanitize can be applied to functions to instruct the compiler not to do sanitization of the options provided as arguments to the attribute. Acceptable values for no_sanitize match those acceptable by the -fsanitize command-line option." Yes, let's wait for more feedback from buildfarm and fix the version requirement. > Once this does settle, should we consider back-patching so that it's > possible to run alignment checks in the back branches too? +1 ------ Regards, Alexander Korotkov
Commits
-
pg_attribute_no_sanitize_alignment() macro
- cc7ea0717b12 9.6.22 landed
- c86eae39ce1e 13.3 landed
- c3dc311ffd64 12.7 landed
- 22001684623b 11.12 landed
- 02e7da01a436 10.17 landed
- 993bdb9f935a 14.0 landed
-
Tweak compiler version cutoff for no_sanitize("alignment") support.
- ad2ad698ac16 14.0 landed
-
Implementation of subscripting for jsonb
- 676887a3b0b8 14.0 cited