Re: Make stack depth check work with asan's use-after-return
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers@postgresql.org
Date: 2026-05-27T13:54:51Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes: > The reason for that breakage is that with the stack-use-after-return logic, > stack variables are moved to heap allocations, to allow to detect references > to the memory at a later time. That breaks 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. > I think we should backpatch this. I'd be worried about using > __builtin_frame_address(), but we already do, for the base address of the > stack. +1. It was a little weird that we adopted __builtin_frame_address() to measure the location of the stack bottom but not the stack top. So I think this is good cleanup even if ASAN weren't forcing it. I might write the comments a bit differently, in particular I suggest changing - * Compute distance from reference point to my local variables + * Compute distance from reference point to my stack frame regards, tom lane