FreeBSD Bugzilla – Attachment 226642 Details for
Bug 257314
FBSD 13 crash after some KDE parts crash supposing out of swap space
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
releng/13 (-p3) patch for reporting OOM condition explicitly
file_257314.txt (text/plain), 4.21 KB, created by
Mark Millard
on 2021-07-23 19:30:52 UTC
(
hide
)
Description:
releng/13 (-p3) patch for reporting OOM condition explicitly
Filename:
MIME Type:
Creator:
Mark Millard
Created:
2021-07-23 19:30:52 UTC
Size:
4.21 KB
patch
obsolete
>diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c >index 3789a0217252..6d608a7d7f07 100644 >--- a/sys/vm/swap_pager.c >+++ b/sys/vm/swap_pager.c >@@ -2040,6 +2040,7 @@ swp_pager_meta_build(vm_object_t object, vm_pindex_t pindex, daddr_t swapblk) > 0, 1)) > printf("swap blk zone exhausted, " > "increase kern.maxswzone\n"); >+ printf("swp_pager_meta_build: swap blk uma zone exhausted\n"); > vm_pageout_oom(VM_OOM_SWAPZ); > pause("swzonxb", 10); > } else >@@ -2070,6 +2071,7 @@ swp_pager_meta_build(vm_object_t object, vm_pindex_t pindex, daddr_t swapblk) > 0, 1)) > printf("swap pctrie zone exhausted, " > "increase kern.maxswzone\n"); >+ printf("swp_pager_meta_build: swap pctrie uma zone exhausted\n"); > vm_pageout_oom(VM_OOM_SWAPZ); > pause("swzonxp", 10); > } else >diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c >index 8b212f3f84e5..1a5b50b6b53e 100644 >--- a/sys/vm/vm_fault.c >+++ b/sys/vm/vm_fault.c >@@ -1135,9 +1135,8 @@ vm_fault_allocate(struct faultstate *fs) > fs->oom++; > vm_waitpfault(dset, vm_pfault_oom_wait * hz); > } else { >- if (bootverbose) >- printf( >- "proc %d (%s) failed to alloc page on fault, starting OOM\n", >+ printf( >+ "vm_fault_allocate: proc %d (%s) failed to alloc page on fault, starting OOM\n", > curproc->p_pid, curproc->p_comm); > vm_pageout_oom(VM_OOM_MEM_PF); > fs->oom = 0; >diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c >index c36b8cdc5762..77e630afd182 100644 >--- a/sys/vm/vm_page.c >+++ b/sys/vm/vm_page.c >@@ -3186,6 +3186,7 @@ vm_wait_doms(const domainset_t *wdoms, int mflags) > * race-free vm_wait_domain(). > */ > if (curproc == pageproc) { >+ printf("thread %d waiting for memory\n", curthread->td_tid); > mtx_lock(&vm_domainset_lock); > vm_pageproc_waiters++; > error = msleep(&vm_pageproc_waiters, &vm_domainset_lock, >diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c >index e49966102a9c..62cfd3ab9f4c 100644 >--- a/sys/vm/vm_pageout.c >+++ b/sys/vm/vm_pageout.c >@@ -1829,6 +1829,8 @@ vm_pageout_mightbe_oom(struct vm_domain *vmd, int page_shortage, > * start OOM. Initiate the selection and signaling of the > * victim. > */ >+ printf("vm_pageout_mightbe_oom: kill context: v_free_count: %u, v_inactive_count: %u\n", >+ vmd->vmd_free_count, vmd->vmd_pagequeues[PQ_INACTIVE].pq_cnt); > vm_pageout_oom(VM_OOM_MEM); > > /* >@@ -2021,10 +2023,24 @@ vm_pageout_oom(int shortage) > } > sx_sunlock(&allproc_lock); > if (bigproc != NULL) { >+ char *reason_text; >+ switch (shortage) { >+ case VM_OOM_MEM_PF: >+ reason_text= "fault's page allocation failed"; >+ break; >+ case VM_OOM_MEM: >+ reason_text= "free RAM stayed below threshold"; >+ break; >+ case VM_OOM_SWAPZ: >+ reason_text= "swblk or swpctrie zone exhausted"; >+ break; >+ default: >+ reason_text= "Unknown Reason"; >+ } > if (vm_panic_on_oom != 0 && --vm_panic_on_oom == 0) >- panic("out of swap space"); >+ panic("%s",reason_text); > PROC_LOCK(bigproc); >- killproc(bigproc, "out of swap space"); >+ killproc(bigproc, reason_text); > sched_nice(bigproc, PRIO_MIN); > _PRELE(bigproc); > PROC_UNLOCK(bigproc);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 257314
: 226642