Date: Thu, 05 Oct 2000 14:46:49 -0700 (PDT) From: John Baldwin <jhb@FreeBSD.org> To: John Baldwin <jhb@FreeBSD.org> Cc: freebsd-current@FreeBSD.org, freebsd-smp@FreeBSD.org, Boris Popov <bp@butya.kz> Subject: RE: Problems with kthread_exit() and SMPng Message-ID: <XFMail.001005144649.jhb@FreeBSD.org> In-Reply-To: <XFMail.001005143107.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Ugh, my mail client ate my reply, lemme try again. > On 05-Oct-00 Boris Popov wrote: >> Hello, >> >> Currently I'm trying to make KLD which uses kernel threads >> unloadable under recent -current. The prototype of functions looks like >> this: >> >> void >> my_thread(void*arg) >> { >> while(wearewanted) { >> do_something(); >> tsleep(); >> } >> exited = 1; >> kthread_exit(0); >> } You need Giant before calling kthread_exit(). >> void >> my_unload() >> { >> wearewanted = 0; >> while (!exited) >> tsleep(1sec); >> } >> >> my_unload() function called from the module unload event which >> issued from the kldunload() syscall. >> >> Unfortunately, kernel panics in the mtx_exit_hard() function. >> After some examination I've found that two fields in the Giant mutex >> structure set to unexpected values: It should have died much earlier if you had INVARIANTS turned on. :( It looks like you are releasing a mutex you probably do not own because cpu_exit() (called by exit1() -> exit() -> kthread_exit()) releases Giant as one of its final tasks. >> ---- >> empty mtx_blocked for mutex Giant >> mtx_contested not in any list for mutex Giant >> ---- >> >> These messages printed by added diagnostics code. With this patch >> (see attachment) it is possible to load and unload KLD without any >> problems on UP machine except that the above messages printed. However, >> I'm don't know if they are correct. (btw, 4.1 doesn't have this problem). This patch is bogus I'm afraid. A contested mutex should always have a process waiting to grab it when it is released. -- John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/ PGP Key: http://www.baldwin.cx/~john/pgpkey.asc "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.001005144649.jhb>