Make stack depth check work with asan's use-after-return - Mailing list pgsql-hackers

From Andres Freund
Subject Make stack depth check work with asan's use-after-return
Date
Msg-id 2kk4z4odvuyrg7qlwjd7ft4eron4cle4btb33v4qatgsdkayir@gj6e62rgsel4
Whole thread
Responses Re: Make stack depth check work with asan's use-after-return
List pgsql-hackers
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

Attachment

pgsql-hackers by date:

Previous
From: Shlok Kyal
Date:
Subject: Re: Support EXCEPT for ALL SEQUENCES publications
Next
From: Tom Lane
Date:
Subject: Re: Make stack depth check work with asan's use-after-return