mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-23 18:02:05 -05:00
82c4812730
This assertion cannot be safely/reliably made in the ~SharedInodeVMObject destructor. The problem is that Inode::is_shared_vmobject holds a weak reference to the instance that is being destroyed (ref count 0). Checking the pointer using WeakPtr::unsafe_ptr will produce nullptr depending on timing in this case, and WeakPtr::safe_ref will reliably produce a nullptr as soon as the reference count drops to 0. The only case where this assertion could succeed is when WeakPtr::unsafe_ptr returned the pointer because it won the race against revoking it. And because WeakPtr::safe_ref will always return a nullptr, we cannot reliably assert this from the ~SharedInodeVMObject destructor. Fixes #4621 |
||
---|---|---|
.. | ||
AnonymousVMObject.cpp | ||
AnonymousVMObject.h | ||
ContiguousVMObject.cpp | ||
ContiguousVMObject.h | ||
InodeVMObject.cpp | ||
InodeVMObject.h | ||
MappedROM.h | ||
MemoryManager.cpp | ||
MemoryManager.h | ||
PageDirectory.cpp | ||
PageDirectory.h | ||
PhysicalPage.cpp | ||
PhysicalPage.h | ||
PhysicalRegion.cpp | ||
PhysicalRegion.h | ||
PrivateInodeVMObject.cpp | ||
PrivateInodeVMObject.h | ||
ProcessPagingScope.cpp | ||
ProcessPagingScope.h | ||
PurgeableVMObject.cpp | ||
PurgeableVMObject.h | ||
RangeAllocator.cpp | ||
RangeAllocator.h | ||
Region.cpp | ||
Region.h | ||
SharedInodeVMObject.cpp | ||
SharedInodeVMObject.h | ||
TypedMapping.h | ||
VMObject.cpp | ||
VMObject.h |