Date: Tue, 12 Mar 2019 23:21:59 -0700 From: Jason Thorpe <thor...@me.com> Message-ID: <ab3dd6e8-9ed7-4929-bf24-c03ec593e...@me.com>
| THAT is particularly special, because the code in question is: | | <snip> | void | uvm_pagewire(struct vm_page *pg) | { | KASSERT(mutex_owned(&uvm_pageqlock)); | #if defined(READAHEAD_STATS) | if ((pg->pqflags & PQ_READAHEAD) != 0) { | uvm_ra_hit.ev_count++; | pg->pqflags &= ~PQ_READAHEAD; | } | #endif /* defined(READAHEAD_STATS) */ | if (pg->wire_count == 0) { | uvm_pagedequeue(pg); | uvmexp.wired++; | } | pg->wire_count++; | KASSERT(pg->wire_count > 0); /* detect wraparound */ | } | </snip> Actually, that probably also explains why my kernel is not crashing. I don't have DIAGNOSTIC enabled, so that KASSERT() does not happen in my kernel. Realised that when I was about to add the KASSERT you suggested... I will change that while continuing to test this. kre