art yerkes wrote:
http://www.superheterodyne.net/reactos/freelist_remove_type.diff
This removes the redundant notion of .Flags.Type in freelist, and leaves only
the non-redundant MM_PHYSICAL_PAGE_BIOS. MM_PHYSICAL_PAGE_FREE is reported
when the page has a 0 reference count and MM_PHYSICAL_PAGE_USED is reported
when the reference count is nonzero.
A function, MmGetPageType is added to replace the old functionality.
I get this on-boot during first-stage, before I even see the installer
screen:
(ntoskrnl\mm\freelist.c:816) Freeing page with flags 2
KeBugCheck at ntoskrnl\mm\freelist.c:817
*** Fatal System Error: 0x00000000
(0x00000000,0x00000000,0x00000000,0x00000000)
<ntoskrnl.exe:2722 (ntoskrnl/ke/bug.c:1089 (KeBugCheck))>
<ntoskrnl.exe:523fd (ntoskrnl/mm/freelist.c:817 (MmDereferencePage))>
<ntoskrnl.exe:50b1c (ntoskrnl/mm/balance.c:111
(MmReleasePageMemoryConsumer))>
<ntoskrnl.exe:8f110 (ntoskrnl/mm/i386/page.c:1022 (MmDeleteVirtualMapping))>
<ntoskrnl.exe:34fcf (ntoskrnl/io/iomgr/driver.c:803
(IopInitializeBootDrivers))>
<ntoskrnl.exe:ab245 (ntoskrnl/io/iomgr/iomgr.c:512 (IoInitSystem))>
<ntoskrnl.exe:214e1 (ntoskrnl/ex/init.c:1168 (Phase1InitializationDiscard))>
<ntoskrnl.exe:21a1a (ntoskrnl/ex/init.c:1235 (Phase1Initialization))>
<ntoskrnl.exe:7b314 (ntoskrnl/ps/thread.c:158 (PspSystemThreadStartup))>
Does the old patch (already commited) conflict with this one?
Init memory being freed seems to cause a lot of grief.
I'm going to see if
there's a way to decentralize how those pages are set up, given that the
method used to dispose of them is spread out too.
I suggest disabling init memory freeing for now, I've slowly taken out
functions of INIT_FUNCTION for some time now, since I never really
trusted the system.
--
Best regards,
Alex Ionescu
Project Lead, TinyKRNL
Kernel-Mode Software Design Engineer, ReactOS