Re: ubsan
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers@postgresql.org
Date: 2022-03-23T22:55:28Z
Lists: pgsql-hackers
Hi,
On 2022-03-23 13:12:34 -0700, Andres Freund wrote:
> I'm planning to enable it on two of mine. Looks like gcc and clang find
> slightly different things, so I was intending to enable it on one of each.
Originally I'd planned to mix them into existing members, but I think it'd be
better to have dedicated ones. Applied for a few new buildfarm names for:
{gcc,clang}-{-fsanitize=undefined,-fsanitize=address}.
Running with asan found an existing use-after-free bug in pg_waldump (*), a bug in
dshash_seq_next() next that probably can't be hit in HEAD and a bug in my
shared memory stats patch. I count that as a success.
It's particularly impressive that the cost of running with ASAN is *so* much
lower than valgrind. On my workstation a check-world with
-fsanitize=alignment,undefined,address takes 3min17s, vs 1min10s or so without
-fsanitize. Not something to always use, but certainly better than valgrind.
Greetings,
Andres Freund
(*) search_directory() uses fname = xlde->d_name after closedir(). Found in
pg_verifybackup.c's tests. Probably worth adding a few simple tests to
pg_waldump itself.
Commits
-
Avoid possible crash within libsanitizer.
- d4baa327a1c9 19 (unreleased) landed
- c775bf048abd 16.11 landed
- a9515f294de1 17.7 landed
- 6d8acb777715 18.1 landed
-
ci: Use -fsanitize=undefined,alignment,address in linux tasks
- bd82928625e7 16.0 landed
-
Add workaround to make ubsan and ps_status.c compatible
- f686ae82f2d7 16.0 landed
-
Don't try to translate NULL in GetConfigOptionByNum().
- 81045e1e1c33 14.3 landed
- c0f99bb520da 13.7 landed
- 61a007feed52 12.11 landed
- 3ac7d024122f 15.0 landed
-
Don't call fwrite() with len == 0 when writing out relcache init file.
- 5f4615b9def5 10.21 landed
- 2121d58091a3 11.16 landed
- c5b60a68cc08 12.11 landed
- 8014c61ebda1 13.7 landed
- 89a94c24aadd 14.3 landed
- 1c6bb380e5ab 15.0 landed
-
configure: check for dlsym instead of dlopen.
- e52e9bd57f33 14.3 landed
- 7c163aa93fe6 13.7 landed
- 6a767bc2e712 12.11 landed
- a77dddb42e09 11.16 landed
- 2a919372655d 10.21 landed
- e71c76fcab8d 15.0 landed
-
Clean up assorted failures under clang's -fsanitize=undefined checks.
- 46ab07ffda9d 15.0 cited