Thread

  1. Make stack depth check work with asan's use-after-return

    Andres Freund <andres@anarazel.de> — 2026-05-27T13:23:13Z

    Hi,
    
    When running asan without further options against the backend, random tests
    fail because the stack-depth check fails. One can work around that by putting
    detect_stack_use_after_return=0 into ASAN_OPTIONS (at least with gcc, clang
    still uses a lot of stack, but i think that's a separate issue).
    
    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.
    
    Greetings,
    
    Andres Freund