NetBSD-Bugs archive

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

Re: port-sparc/55895 (panic: kernel diagnostic assertion "(flags & (PR_NOWAIT|PR_LIMITFAIL)) != 0" failed)



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

From: Chuck Silvers <chuq%chuq.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: kern-bug-people%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost,
	gnats-admin%netbsd.org@localhost, Andreas Gustafsson <gson%gson.org@localhost>
Subject: Re: port-sparc/55895 (panic: kernel diagnostic assertion "(flags &
 (PR_NOWAIT|PR_LIMITFAIL)) != 0" failed)
Date: Thu, 7 Jan 2021 10:54:33 -0800

 all of these assertion failures have this stack trace:
 
     ipsec_tunnel_ipv4_ah_hmacripemd160: [ 10851.7832570] panic: kernel diagnostic assertion "(flags & (PR_NOWAIT|PR_LIMITFAIL)) != 0" failed: file "/tmp/build/2020.12.26.22.28.35-sparc/src/sys/kern/subr_pool.c", line 1181 
 [ 10851.7955840] cpu0: Begin traceback...
 [ 10851.7955840] 0x0(0xf0474818, 0xf584e920, 0xf0577c00, 0xf0578c00, 0x104, 0xf0578b50) at netbsd:kern_assert+0x38
 [ 10851.7955840] kern_assert(0xf0474818, 0xf0474808, 0xf04c5438, 0xf04c4c58, 0x49d, 0x0) at netbsd:pool_get+0x818
 [ 10851.7955840] pool_get(0xf055d108, 0x1, 0xf04c4c58, 0xf0474808, 0xf055d180, 0x0) at netbsd:pmap_pmap_pool_ctor+0xc4
 [ 10851.7955840] pmap_pmap_pool_ctor(0x0, 0xf0a72220, 0x1, 0x0, 0xf055cd38, 0xf0a72000) at netbsd:pool_cache_get_slow+0x18c
 [ 10851.7955840] pool_cache_get_slow(0xf055ccc0, 0xf055cec0, 0xf0a72220, 0xf584ea7c, 0x0, 0x1) at netbsd:pool_cache_get_paddr+0x14c
 [ 10851.7955840] pool_cache_get_paddr(0xf055ccc0, 0x1, 0x0, 0x0, 0xf055cec0, 0xf055ccc0) at netbsd:pmap_create+0x10
 [ 10851.7955840] pmap_create(0xf0d68a5c, 0x3, 0x0, 0xf029115c, 0x0, 0xf0d68ad0) at netbsd:uvmspace_init+0x5c
 [ 10851.8042170] uvmspace_init(0xf0d68a50, 0x0, 0x1000, 0xf0000000, 0x1, 0xf05730c0) at netbsd:uvmspace_alloc+0x28
 [ 10851.8042170] uvmspace_alloc(0xf0d68a50, 0xf0000000, 0x1, 0xf584ec04, 0x1000, 0xf584d000) at netbsd:uvmspace_exec+0x54
 [ 10851.8042170] uvmspace_exec(0xf0d4b180, 0x1000, 0xf0000000, 0x1, 0x0, 0xf0d68108) at netbsd:execve_runproc+0x838
 [ 10851.8042170] execve_runproc(0xf0d4b180, 0xf584ecf8, 0x0, 0x0, 0xf0d4b180, 0xf0d9ba90) at netbsd:execve1+0x44
 [ 10851.8042170] execve1(0xf0d4b180, 0x1, 0xeffff350, 0xffffffff, 0xeffff050, 0xeffff99c) at netbsd:sys_execve+0x24
 [ 10851.8042170] sys_execve(0xf0d4b180, 0xf584ef30, 0xf584ef28, 0xeffff350, 0x0, 0x8573836) at netbsd:syscall+0xe0
 [ 10851.8042170] syscall(0xc3b, 0xf584efb0, 0xedc5e124, 0x3b, 0x3, 0xf0d4b180) at netbsd:memfault_sun4m+0x3f8
 [ 10851.8042170] cpu0: End traceback...
 
 here is the pool_get() call:
 
 			upt = pool_get(&L1_pool, flags);
 
 and here is the ctor for L1_pool:
 
 void *
 pgt_page_alloc(struct pool *pp, int flags)
 {
 	int cacheit = (CACHEINFO.c_flags & CACHE_PAGETABLES) != 0;
 	struct vm_page *pg;
 	vaddr_t va;
 	paddr_t pa;
 
 	/* Allocate a page of physical memory */
 	if ((pg = uvm_pagealloc(NULL, 0, NULL, 0)) == NULL)
 		return (NULL);
 
 ...
 }
 
 
 the problem is that the ctor does not retry the page allocation if
 uvm_pagealloc() fails but (flags & PR_WAITOK).
 


Home | Main Index | Thread Index | Old Index