|
Windows does the same double mapping that Unix does when journaling is enabled.
The main reason not to do journaling by default in 32-bit Windows is the same (more or less) as in Unix ... there isn't enough address space as it is, and journaling doubles the amount of it that gets used for memory-mapped files.
The additional complication in 32-bit Windows is the problem where we have to unmap and then remap the private view as separate operations, and we can't do the trick we do on 64-bit Windows of mapping at a high address (256 GB) to prevent thread stacks and heaps from appearing in our briefly unmapped window of vulnerability. So, 32-bit Windows with journaling will be subject to MapViewOfFileEx() failures with error 487 when a thread stack or heap is created in the location where a private view has just been unmapped. This triggers a fatal assert. Since this would only happen when journaling is on, you would recover on restart.
|