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)



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