Date: Fri, 04 Mar 2005 07:41:08 +0800 From: David Xu <davidxu@freebsd.org> To: Scott Long <scottl@samsco.org> Cc: David Schultz <das@freebsd.org> Subject: Re: cvs commit: src/sys/kern kern_sig.c Message-ID: <4227A094.5030600@freebsd.org> In-Reply-To: <42279EE9.3020905@samsco.org> References: <200503021343.j22DhpQ3075008@repoman.freebsd.org> <200503020915.28512.jhb@FreeBSD.org> <4226446B.7020406@freebsd.org> <20050303033115.GA13174@VARK.MIT.EDU> <42269DB0.6070107@freebsd.org> <20050303052902.GA14011@VARK.MIT.EDU> <422771E9.6070405@elischer.org> <42279C72.2000208@freebsd.org> <42279EE9.3020905@samsco.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Scott Long wrote: > David Xu wrote: > >> Julian Elischer wrote: >> >>>> >>>> >>>>>> The alternative, of course, is to just fix the code that assumes >>>>>> that swapping doesn't exist. >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> First find all code written in such way, but it is not that easy. >>>>> >>>> >>>> >>>> >>>> >>>> True. If we changed msleep() to disable swapping by default, then >>>> we wouldn't have to worry about correctness problems related to >>>> missing some. >>>> >>>> >>> >>> adding the flag to ENABLE swapping would be ABI compatible. >>> >>> >> how about adding a PNOSWAP to msleep ? but I won't trust the kernel >> under swapping, because they can not give me 100% guarantee, my >> machine crashes several times per-month, even when fscking at boot time, >> mostly it is a page fault. >> >> David Xu >> >> >> >> >> > > An msleep/tsleep option doesn't solve the problem because the the msleep > might happen several layers down from where the stack abuse is taking > place, and thus the caller would have no idea that it's needed. But it at least can help a piece of code managed by a single guy. > The fix > for sigwait() is easy and can be applied without hacking in new options > that have limited value. I don't argue that similar problems might > exist elsewhere, but swappable kstacks have been part of BSD since > before most of us knew where the power switch was on our Ataris, so it's > likely not to be a wide-spread and fundamental problem in the code. I'd > be in favor of adding diagnostics that help catch these problems and > report them, but just throwing away kstack swapping in leiu of taking > the 2 minutes to fix sigwait() is pretty silly. > Yes, sigwait is simple, but my umtx code is also broken by this silly swapping code, now I have to fill malloc/free/retry/lock_order_reversal_work_around all over the code. > Scott > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4227A094.5030600>