#10169: Double Fault Exception on usb boot x86_64 -----------------------------+---------------------------- Reporter: korli | Owner: axeld Type: bug | Status: new Priority: normal | Milestone: R1 Component: System/Kernel | Version: R1/Development Resolution: | Keywords: Blocked By: | Blocking: Has a Patch: 0 | Platform: x86-64 -----------------------------+---------------------------- Comment (by korli): Here is a patch for the wrappers stack usage issue. I have no idea better than stackWrappers2 for the variable name ATM. Testing with a 128MB VM seemed OK. I encountered "PageWriteWrapper: Failed to write page" messages in the syslog on low memory condition with or without this patch. {{{ diff --git a/src/system/kernel/vm/vm_page.cpp b/src/system/kernel/vm/vm_page.cpp index ee20257..34d7370 100644 --- a/src/system/kernel/vm/vm_page.cpp +++ b/src/system/kernel/vm/vm_page.cpp @@ -3081,7 +3081,14 @@ vm_page_write_modified_page_range(struct VMCache* cache, uint32 firstPage, int32 nextWrapper = 0; - PageWriteWrapper* wrappers[maxPages]; + PageWriteWrapper* stackWrappers2[1]; + PageWriteWrapper** wrappers + = new(malloc_flags(allocationFlags)) PageWriteWrapper*[maxPages]; + if (wrappers == NULL) { + // don't fail, just limit our capabilities + wrappers = stackWrappers2; + maxPages = 1; + } int32 usedWrappers = 0; PageWriteTransfer transfer; @@ -3153,6 +3160,8 @@ vm_page_write_modified_page_range(struct VMCache* cache, uint32 firstPage, if (wrapperPool != stackWrappers) delete[] wrapperPool; + if (wrappers != stackWrappers2) + delete[] wrappers; return B_OK; } }}} -- Ticket URL: <http://dev.haiku-os.org/ticket/10169#comment:6> Haiku <http://dev.haiku-os.org> Haiku - the operating system.