[haiku-bugs] Re: [Haiku] #5328: Had reserved page but threre is none after latest slab/vm changes

  • From: "bonefish" <trac@xxxxxxxxxxxx>
  • Date: Wed, 27 Jan 2010 21:06:31 -0000

#5328: Had reserved page but threre is none after latest slab/vm changes
---------------------------+------------------------------------------------
 Reporter:  mmlr           |       Owner:  bonefish      
     Type:  bug            |      Status:  new           
 Priority:  normal         |   Milestone:  R1            
Component:  System/Kernel  |     Version:  R1/Development
 Keywords:                 |   Blockedby:                
 Platform:  All            |    Blocking:                
---------------------------+------------------------------------------------

Comment(by bonefish):

 Unfortunately there's very little helpful information available at that
 point. "page_stats" will give you current page statistics. It will show
 that the clear and free queues are empty and probably also a violation of
 the page reservation invariant, which is:
 {{{
 free count + clear count >= unreserved free pages + system reserved pages
 }}}
 Most of the time the left hand side and right hand side will be equal,
 only while allocating pages that will be a proper greater.

 The policy for allocating pages is to first reserve as many as needed at
 maximum, allocate as many as needed, and unreserve the maximum again. The
 invariant can be violated by allocating more pages than reserved or by
 unreserving pages one has not reserved. Other than that only a bug in
 vm_page.cpp can cause that.

 The slab changes are relatively unsuspicious in that respect -- there's
 only one place where pages are allocated (MemoryManager::_MapChunk()) and
 that looks OK. The most likely change for a potential bug is r35295, where
 I introduced the system reserve, which made the page reservation code in
 vm_page.cpp significantly more complicated. I've read through it several
 times without spotting a problem, though. Anyway, you could try the
 previous version and verify whether it is to blame.

 Finally, there's PAGE_ALLOCATION_TRACING that could be enabled, but unless
 one has a concrete point in time when the suspected problem occurred, it
 is not particularly helpful.

-- 
Ticket URL: <http://dev.haiku-os.org/ticket/5328#comment:1>
Haiku <http://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: