From owner-freebsd-bugs@FreeBSD.ORG Fri Dec 7 18:50:01 2012 Return-Path: Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6D166B4D for ; Fri, 7 Dec 2012 18:50:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 4EC688FC08 for ; Fri, 7 Dec 2012 18:50:01 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id qB7Io1jT040922 for ; Fri, 7 Dec 2012 18:50:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id qB7Io17U040917; Fri, 7 Dec 2012 18:50:01 GMT (envelope-from gnats) Date: Fri, 7 Dec 2012 18:50:01 GMT Message-Id: <201212071850.qB7Io17U040917@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: Eitan Adler Subject: Re: kern/174236: "kldunload ipdivert" corrupts kernel X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Eitan Adler List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Dec 2012 18:50:01 -0000 The following reply was made to PR kern/174236; it has been noted by GNATS. From: Eitan Adler To: Lutz Donnerhacke Cc: freebsd-bugs@freebsd.org, bug-followup Subject: Re: kern/174236: "kldunload ipdivert" corrupts kernel Date: Fri, 7 Dec 2012 13:42:29 -0500 On 7 December 2012 09:50, Lutz Donnerhacke wrote: > The following reply was made to PR kern/174236; it has been noted by GNATS. > > From: Lutz Donnerhacke > To: bug-followup@FreeBSD.org > Cc: > Subject: Re: kern/174236: "kldunload ipdivert" corrupts kernel > Date: Fri, 7 Dec 2012 15:45:00 +0100 > > Any module which returns an error on unload will cause the problem. > It's not specific to ipdivert.ko or ipfw.ko or anything else. > > Relevant code section is: > > static int > div_modevent(module_t mod, int type, void *unused) > { > int err = 0; > switch (type) { > [...] > case MOD_QUIESCE: > err = EPERM; > break; > [...] > } > return err; > } > > Please note: Forced unload of ipdivert.ko works fine. If you are able and willing to debug: I'd recommend him to enter debugger and run ps there and get backtraces of the hanging threads it sounds like a leaked lock in the error case If not, just leaving this here for the record ;) -- Eitan Adler