[haiku-bugs] Re: [Haiku] #10169: Double Fault Exception on usb boot x86_64

  • From: "korli" <trac@xxxxxxxxxxxx>
  • Date: Fri, 08 Nov 2013 17:46:03 -0000

#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.

Other related posts: