diff --git a/Kernel/Coredump.cpp b/Kernel/Coredump.cpp index ee6a266a3f..fe4629d53a 100644 --- a/Kernel/Coredump.cpp +++ b/Kernel/Coredump.cpp @@ -186,6 +186,10 @@ ErrorOr Coredump::write_regions() if (region->access() == Memory::Region::Access::None) continue; + // If we crashed in the middle of mapping in Regions, they do not have a page directory yet, and will crash on a remap() call + if (!region->is_mapped()) + continue; + region->set_readable(true); region->remap(); diff --git a/Kernel/Memory/Region.h b/Kernel/Memory/Region.h index 54380fe7ed..dcaeae18a0 100644 --- a/Kernel/Memory/Region.h +++ b/Kernel/Memory/Region.h @@ -188,6 +188,8 @@ public: void remap(); + [[nodiscard]] bool is_mapped() const { return m_page_directory != nullptr; } + void clear_to_zero(); [[nodiscard]] bool is_syscall_region() const { return m_syscall_region; }