NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-amd64/60920: 11.0 kernel for amd64 fails with null pointer deref in uvm_page_redim()



The following reply was made to PR port-amd64/60920; it has been noted by GNATS.

From: Havard Eidnes <he%NetBSD.org@localhost>
To: gnats-bugs%netbsd.org@localhost, gnats-admin%NetBSD.org@localhost
Cc: port-amd64-maintainer%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: port-amd64/60920: 11.0 kernel for amd64 fails with null
 pointer deref in uvm_page_redim()
Date: Sat, 24 Oct 2026 18:22:23 +0200 (CEST)

 >  Can you dump uvm.bucketcount in DDB ?
 
 If possible, I prefer not to have to shut down this host to do
 that.  Is there something I can dig out of the running 10.0
 system which would give us that information?
 
 But if there is no other way...
 
 
 Looking at various header files:
 
 #define VM_NFREELIST            6
 ...
 struct uvm {
         /* vm_page related parameters */
 
                 /* vm_page queues */
         struct pgfreelist page_free[VM_NFREELIST]; /* unallocated pages */
         u_int   bucketcount;
         bool    page_init_done;         /* true if uvm_page_init() finished */
 
                 /* page daemon trigger */
         int pagedaemon;                 /* daemon sleeps on this */
         struct lwp *pagedaemon_lwp;     /* daemon's lid */
 };
 
 ...
 extern struct uvm uvm;
 ...
 
 #define PGFL_MAX_BUCKETS        8
 struct pgfreelist {
         struct pgflbucket       *pgfl_buckets[PGFL_MAX_BUCKETS];
 };
 
 
 
 # crash
 Crash version 10.0, image version 10.0.
 Kernel compiled without options LOCKDEBUG.
 Output from a running system is unreliable.
 crash> p uvm
 ffffffff8190ecc0
 crash> x/x,4
 uvm:    d9b5e000    ffff82fa    d9b5e140    ffff82fa
 crash> 
 uvm+0x10:       0           0           0           0
 crash> 
 uvm+0x20:       0           0           0           0
 crash> 
 uvm+0x30:       0           0           0           0
 crash>
 crash> 
 uvm+0x40:       d9b5e280    ffff82fa    d9b5e3c0    ffff82fa
 crash> 
 uvm+0x50:       0           0           0           0
 crash> 
 uvm+0x60:       0           0           0           0
 crash> 
 uvm+0x70:       0           0           0           0
 crash> 
 uvm+0x80:       d9b5e500    ffff82fa    d9b5e640    ffff82fa
 crash> 
 uvm+0x90:       0           0           0           0
 crash> 
 uvm+0xa0:       0           0           0           0
 crash> 
 uvm+0xb0:       0           0           0           0
 crash> 
 uvm+0xc0:       d9b5e780    ffff82fa    d9b5e8c0    ffff82fa
 crash> 
 uvm+0xd0:       0           0           0           0
 crash> 
 uvm+0xe0:       0           0           0           0
 crash> 
 uvm+0xf0:       0           0           0           0
 crash> 
 uvm+0x100:      d9b5ea00    ffff82fa    d9b5eb40    ffff82fa
 crash> 
 uvm+0x110:      0           0           0           0
 crash> 
 uvm+0x120:      0           0           0           0
 crash> 
 uvm+0x130:      0           0           0           0
 crash> 
 uvm+0x140:      d9b5ec80    ffff82fa    d9b5edc0    ffff82fa
 crash> 
 uvm+0x150:      0           0           0           0
 crash> 
 uvm+0x160:      0           0           0           0
 crash> 
 uvm+0x170:      0           0           0           0
 crash> 
 uvm+0x180:      2           1           0           0
 crash> 
 
 So bucketcount = 2, at least in 10.0?
 
 and 10.0 probed the CPUs like this:
 
 : {31} dmesg | egrep 'cpu.*node'
 [     1.000004] cpu0: node 0, package 0, core 0, smt 0
 [     1.000004] cpu1: node 0, package 0, core 1, smt 0
 [     1.000004] cpu2: node 0, package 0, core 2, smt 0
 [     1.000004] cpu3: node 0, package 0, core 3, smt 0
 [     1.000004] cpu4: node 0, package 0, core 4, smt 0
 [     1.000004] cpu5: node 0, package 0, core 5, smt 0
 [     1.000004] cpu6: node 0, package 0, core 6, smt 0
 [     1.000004] cpu7: node 0, package 0, core 7, smt 0
 [     1.000004] cpu8: node 0, package 1, core 0, smt 0
 [     1.000004] cpu9: node 0, package 1, core 1, smt 0
 [     1.000004] cpu10: node 0, package 1, core 2, smt 0
 [     1.000004] cpu11: node 0, package 1, core 3, smt 0
 [     1.000004] cpu12: node 1, package 1, core 4, smt 0
 [     1.000004] cpu13: node 1, package 1, core 5, smt 0
 [     1.000004] cpu14: node 1, package 1, core 6, smt 0
 [     1.000004] cpu15: node 1, package 1, core 7, smt 0
 : {32} 
 
 which seems to be identical to what 11.0 did.
 



Home | Main Index | Thread Index | Old Index