]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Make stack depth check work with asan's use-after-return
authorAndres Freund <andres@anarazel.de>
Thu, 28 May 2026 15:34:11 +0000 (11:34 -0400)
committerAndres Freund <andres@anarazel.de>
Thu, 28 May 2026 15:43:29 +0000 (11:43 -0400)
commit659701788171a5899119a6ddd98771371b355437
tree9fc14a712123a200c8e7b646443e9321a0df4f34
parent497e92dce9b4c094fc6cee0ab37e6b9d65e67046
Make stack depth check work with asan's use-after-return

With address sanitizer's stack-use-after-return check, stack variables are
moved to heap allocations, to allow to detect references to the memory at a
later time. That broke our stack-depth check, which is why we had to disable
detect_stack_use_after_return in CI. Luckily __builtin_frame_address() works
correctly, even under asan, so use that.

We started using __builtin_frame_address() with de447bb8e6fb, however as of
that commit we just used it for the stack base address, not for the value to
compare to the base address.  Now we use it for both.

When building without __builtin_frame_address() support, we continue to use
stack variables for the stack depth determination.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/2kk4z4odvuyrg7qlwjd7ft4eron4cle4btb33v4qatgsdkayir@gj6e62rgsel4
Backpatch-through: 14
.cirrus.tasks.yml
src/backend/utils/misc/stack_depth.c