RetroFed Forum
Your home away from modern life.
Clang sanitizer failure with ASLR enabled
Post Reply
AuthorMessage
socphoenix midwest.social socphoenix@midwest.social
Joined: 2023-06-01
Quote

II. Problem Description

Some of the Sanitizers cannot work correctly when ASLR is enabled. Therefore, at
the initialization of such Sanitizers, ASLR is detected via procctl(2). If ASLR
is enabled, it is first disabled, and then the main executable containing the
Sanitizer is re-executed, after printing an appropriate message.

However, the Sanitizers work by intercepting various function calls, and by
mistake the already-intercepted procctl(2) function was used. This causes an
internal error, which usually results in a segfault.

III. Impact

Binaries linked to AddressSanitizer (using -fsanitize=address), MemorySanitizer
(using -fsanitize=memory) or ThreadSanitizer (using -fsanitize=thread) can crash
at startup with a segfault, if ASLR is enabled. Other binaries are not affected.

IV. Workaround

If ASLR is enabled system-wide, the problem can be worked around by running the
specific binary with proccontrol(1), to temporarily disable ASLR for only that
program. For example:

proccontrol -m aslr -s disable /path/to/example_program

1   Original
Post Reply
Back to top