panic in uma_zdestroy

Bosko Milekic bmilekic at technokratis.com
Fri Aug 1 10:32:25 PDT 2003


I screwed up...  fix coming shortly.  Sorry!

On Fri, Aug 01, 2003 at 07:00:19PM +0200, Harti Brandt wrote:
> 
> Hi,
> 
> with a kernel from yesterday I get a panic on an SMP system when I
> destroy a zone immediately after creating it. It have a driver (with the
> probe routine set to return ENXIO) and the following module event
> function:
> 
> /*
>  * Module loaded/unloaded
>  */
> int
> en_modevent(module_t mod __unused, int event, void *arg __unused)
> {
> 
> 	switch (event) {
> 
> 	  case MOD_LOAD:
> 		en_vcc_zone = uma_zcreate("EN vccs", sizeof(struct en_vcc),
> 		    NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0);
> 		if (en_vcc_zone == NULL)
> 			return (ENOMEM);
> 		break;
> 
> 	  case MOD_UNLOAD:
> 		uma_zdestroy(en_vcc_zone);
> 		break;
> 	}
> 	return (0);
> }
> 
> When I load the module and unload it I get a panic with the following trace:
> 
> db> trace
> uma_zfree_internal(c083a200,0,0,0,c627b3c4) at uma_zfree_internal+0xb0
> cache_drain(c627b300,1,c030547c,245,c0369740) at cache_drain+0xe3
> zone_drain_common(c627b300,1,c030547c,461,0) at zone_drain_common+0x62
> zone_dtor(c627b300,f4,0,dad4fc40,c01b0255) at zone_dtor+0x55
> uma_zfree_internal(c0369660,c627b300,0,0,dad4fc60) at uma_zfree_internal+0x35
> uma_zdestroy(c627b300,dad4fc84,c01adce0,c6302c40,1) at uma_zdestroy+0x2a
> en_modevent(c6302c40,1,0,c5ea2000,c632c700) at en_modevent+0x4b
> driver_module_handler(c6302c40,1,c658a804,dad4fcc0,c0183f61) at driver_module_handler+0x120
> module_unload(c6302c40,c02f00d9,1f1,0,0) at module_unload+0x1e
> linker_file_unload(c632c700,0,c02f00d9,31b,c632f250) at linker_file_unload+0x81
> kldunload(c6046ab0,dad4fd10,c0309978,3ee,1) at kldunload+0x9b
> syscall(2f,2f,2f,bfbffd03,bfbffc1c) at syscall+0x2b3
> Xint0x80_syscall() at Xint0x80_syscall+0x1d
> --- syscall (305, FreeBSD ELF32, kldunload), eip = 0x80485b3, esp = 0xbfbff76c, ebp = 0xbfbffbcc ---
> db>
> 
> The uma_zfree_internal call is the first one in cache_drain (the one
> that frees uc_allocbucket). The seconds argument to uma_zfree_internal in the
> trace above seems rather strange to me. What is the problem here?
> 
> harti
> 
> -- 
> harti brandt,
> http://www.fokus.fraunhofer.de/research/cc/cats/employees/hartmut.brandt/private
> brandt at fokus.fraunhofer.de, harti at freebsd.org
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
> 

-- 
Bosko Milekic  *  bmilekic at technokratis.com  *  bmilekic at FreeBSD.org
TECHNOkRATIS Consulting Services  *  http://www.technokratis.com/


More information about the freebsd-hackers mailing list