1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 16:18:12 +00:00

Kernel: Note if the page fault address is a destroyed smart pointer

While I was working on LibWeb, I got a page fault at 0xe0e0e0e4.
This indicates a destroyed RefPtr if compiled with SANITIZE_PTRS
defined. However, the page fault handler didn't print out this
indication.

This makes the page fault handler print out a note if the faulting
address looks like a recently destroyed RefPtr, OwnPtr, NonnullRefPtr,
NonnullOwnPtr, ThreadSafeRefPtr or ThreadSafeNonnullRefPtr. It will
only do this if SANITIZE_PTRS is defined, as smart pointers don't get
scrubbed without it being defined.
This commit is contained in:
Luke Wilde 2021-10-07 20:10:56 +01:00 committed by Andreas Kling
parent 350c5a751d
commit 49259777ef
7 changed files with 45 additions and 12 deletions

View file

@ -19,6 +19,8 @@
# include <Kernel/Arch/x86/ScopedCritical.h>
#endif
#define THREADSAFEREFPTR_SCRUB_BYTE 0xa0
namespace AK {
template<typename T>
@ -182,7 +184,7 @@ public:
{
clear();
#ifdef SANITIZE_PTRS
m_bits.store(explode_byte(0xe0), AK::MemoryOrder::memory_order_relaxed);
m_bits.store(explode_byte(THREADSAFEREFPTR_SCRUB_BYTE), AK::MemoryOrder::memory_order_relaxed);
#endif
}