You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When booting operating systems, such as Windows 95, or Windows 98, some system applications may experience frequent "Page Fault" errors, or system instability.
Furthermore, Windows 98 must be started with either Program Manager or the Windows 95 explorer as its default shell, as the integrated web features of the Windows 98 explorer result in Page Faults at the system level.
Memory access functions called by the native code may trigger an I/O port or page fault exception within the guest. DOSBox and DOSBox-X resolve the fault by pushing an exception frame onto the stack and then recursing into another emulation loop which does not break until the fault is resolved. While this is perfectly fine for DOS and Windows 3.1 simple fault handling, this may cause recursion issues with more advanced task switching and fault handling in Windows 95 and later.
By the way, we will eventually build on the latest DOSBox SVN code base, so if there is any improvements regarding exception handling, we will revisit at that time.
The issue occurs with the simple core too. It's an issue with the recursive nature of DOSBOX page faults interfering with how some booted operating systems expect page faults to be handled; rather than the core type.
However, it would seem (based on research I've been doing over the past night) that even if non-recursive page fault handling were implemented, in the same vein as DOSBOX-X, that it wouldn't support the dynrec core.
/* Dynamic core is NOT compatible with the way page faults
* in the guest are handled in this emulator. Do not use
* dynamic core if paging is enabled. Do not comment this
* out, even if it happens to work for a minute, a half
* hour, a day, because it will turn around and cause
* Windows 95 to crash when you've become most comfortable
* with the idea that it works. This code cannot handle
* the sudden context switch of a page fault and it never
* will. Don't do it. You have been warned. */
Further, iDOS is configured to use dynrec as its dynamic core, as opposed to dyn_x86, so I wouldn't know where to start in trying to port non-recursive page fault handling for dynamic myself. (I am not comfortable or familiar enough with C/CPP/Obj-C languages, nor the DOSBOX codebase, to competently implement non-recursive page faults in a different core).
MisutaaAsriel
changed the title
Booted Operating Systems Suffer Page Faults
Recursive Page Fault Handling Interferes with Multitasking Systems
Aug 1, 2021
Issue
When booting operating systems, such as Windows 95, or Windows 98, some system applications may experience frequent "Page Fault" errors, or system instability.
Furthermore, Windows 98 must be started with either Program Manager or the Windows 95 explorer as its default shell, as the integrated web features of the Windows 98 explorer result in Page Faults at the system level.
Example Page Fault:
Known Versions Issue Pertains To
Version
2.6
Build20210108
Version
2.6
Build20210108
, Pull (Issue #21) Increase Supported Memory to 256MB #131Notes
Increasing or decreasing
memsize
has no effect on this. Would appear to be an issue with how memory paging is handled by iDOS on iOS. Issue appears to be related to how mainline DOSBOX handles page faults.The DOSBOX-X fork features the ability to use non-recursive page fault handling in its dynamic_x86 core (dosbox-x #2182). Could this possibly be implemented with the dynrec core in use by iDOS?
The text was updated successfully, but these errors were encountered: