As the DefaultMMapper object is a namespace-level variable, its destruction happens unsynchronized with uses. ~SectionMemoryManager() needs MMapper which might have been destructed before the call to ~SectionMemoryManager() in cases where ~SectionMemoryManager() is triggered by some other static destruction.
To sort this out, make the DefaultMMapper object function-local. That way its construction happens before the first use (which might be static initialization), and its destruction is sequenced after that use's static destruction. This allows the use of the default SectionMemoryManager by objects with static storage duration.