17 Commits

Author SHA1 Message Date
Vitaly Buka
36bd9aebc4
[sanitizer] VReport BeforeFork/AfterFork (#111900)
Forks are common suspects for unusual sanitizer behavior.
It can be handy to see them without rebuild.
2024-10-10 13:12:36 -07:00
Vitaly Buka
56b73f2a73 [msan] Fix compilation broken by invalid conflict resolution 2024-07-11 19:27:55 -07:00
Vitaly Buka
6dd1f080e1 [NFC][msan] Use %p to print addresses 2024-07-11 18:47:52 -07:00
Vitaly Buka
79bd6287a9 [NFC][msan] Mention sanitizer in error messages
And remove spaces around '-' printing ranges.
2024-07-11 18:38:21 -07:00
Thurston Dang
fff8b3236a
[msan] Block signals during MsanThread::TSDDtor (#98405)
MSan may segfault inside a signal handler, if MSan instrumentation is
trying to access thread-local storage that has already been destroyed.
This fixes the issue by blocking asychronous signals inside
MsanThread::TSDDtor. This is based on an idea suggested by Paul
Pluzhnikov (block async signals in MsanThread::Destroy()) and refined by
Vitaly Buka.
    
Note: ed8565cf0b64ea5e88cc94f321b1870bb105d09d changed *BlockSignals to
only block asynchronous signals, despite the name.
2024-07-11 08:26:04 -07:00
Thurston Dang
dc0cb17241
[msan] Nit: use init_origins parameter instead of __msan_get_track_origins() in InitShadowWithReExec (#86994)
This fixes a nit I had accidentally introduced in
https://github.com/llvm/llvm-project/pull/85142

I don't think the value of __msan_get_track_origins() will change
between the start and end of InitShadowWithReExec, but it's cleaner to
use the parameter.
2024-03-31 18:49:31 -07:00
Thurston Dang
58f7251820
[msan] Re-exec with no ASLR if memory layout is incompatible on Linux (#85142)
This ports the change from TSan
(0784b1eefa).

Testing notes: run 'sudo sysctl vm.mmap_rnd_bits=32; ninja check-msan'
before and after this patch.

N.B. aggressive ASLR may also cause the app to overlap with the
allocator region; for MSan, this was fixed in
af2bf86a37
2024-03-15 09:49:00 -07:00
Thurston Dang
af2bf86a37
[msan] Add 'MappingDesc::ALLOCATOR' type and check it is available (#85153)
MSan divides the virtual address space into APP, INVALID, SHADOW and
ORIGIN memory. The allocator usually just steals a bit of the APP
address space: typically the bottom portion of the PIE binaries section,
which works because the Linux kernel maps from the top of the PIE
binaries section. However, if ASLR is very aggressive, the binary may
end up mapped in the same location where the allocator wants to live;
this results in a segfault.

This patch adds in a MappingDesc::ALLOCATOR type and enforces that the
memory range for the allocator is not occupied by anything else.

Since the allocator range information is not readily available in
msan.h, we duplicate the information from msan_allocator.cpp.

Note: aggressive ASLR can also lead to a different type of failure,
where the PIE binaries/libraries are mapped entirely outside of the
APP/ALLOCATOR sections; that will be addressed in a separate patch
(https://github.com/llvm/llvm-project/pull/85142).
2024-03-14 16:19:30 -07:00
Vitaly Buka
f78a742ab8
[NFC][sanitizer] Rename Lock{Before,After}Fork suffixes locking StackDepotBase (#76279)
This is preparation for performance optimization.

We need to highlight that this is very specific lock, and should not be
used for other purposes.
Add `fork_child` parameter to distinguish processes after fork.
2023-12-22 23:38:01 -08:00
Vitaly Buka
fcce843227
[msan] Use pthread_atfork instead of interceptor (#75398)
This is done for consistency with other sanitizers.
Also lock the allocator.
2023-12-13 15:36:38 -08:00
Vitaly Buka
192840113a [NFC][msan] Clang-format some includes 2023-12-13 14:46:08 -08:00
Vitaly Buka
db0af393f9 [msan] Fix ppc64 format warning 2021-08-14 18:43:24 -07:00
Dmitry Vyukov
d26d5a0a3d msan: clean up and enable format string checking
Depends on D107981.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D107982
2021-08-13 13:45:02 +02:00
Fangrui Song
60afb58bfe [msan] Delete unused glibc header <execinfo.h>
The file does not call backtrace/backtrace_symbols.
2020-12-27 21:59:23 -08:00
Evgenii Stepanov
dc3388b020 [msan] Respect no_huge_pages_for_shadow.
Disable huge pages in the MSan shadow region when
no_huge_pages_for_shadow == true (default).

Differential Revision: https://reviews.llvm.org/D85061
2020-08-01 16:59:51 -07:00
Vitaly Buka
48eb4a27d1 Update compiler-rt cpplint.py
adb3500107

llvm-svn: 371675
2019-09-11 21:33:06 +00:00
Nico Weber
60c66db476 compiler-rt: Rename .cc file in lib/msan to .cpp
Like r367463, but for msan.

llvm-svn: 367562
2019-08-01 14:08:18 +00:00