Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 05 Jan 2004 17:30:09 -0500 (EST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Juli Mallett <jmallett@FreeBSD.org>
Cc:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   Re: PERFORCE change 44709 for review
Message-ID:  <XFMail.20040105173009.jhb@FreeBSD.org>
In-Reply-To: <20040102231149.GA69929@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 02-Jan-2004 Juli Mallett wrote:
> * Sam Leffler <sam@errno.com> [ Date: 2004-01-02 ]
>       [ w.r.t. Re: PERFORCE change 44709 for review ]
>> On Friday 02 January 2004 02:04 pm, John Baldwin wrote:
>> > http://perforce.freebsd.org/chv.cgi?CH=44709
>> >
>> > Change 44709 by jhb@jhb_blue on 2004/01/02 14:04:27
>> >
>> >    Bah, stupid bug.
>> >
>> > Affected files ...
>> >
>> > .. //depot/projects/smpng/sys/modules/crash/crash.c#8 edit
>> >
>> > Differences ...
>> >
>> > ==== //depot/projects/smpng/sys/modules/crash/crash.c#8 (text+ko) ====
>> >
>> > @@ -234,9 +234,9 @@
>> >                    break;
>> >            case 18:
>> >                    bzero(&test1_mtx, sizeof(test1_mtx));
>> > -                  bzero(&test1_mtx, sizeof(test2_mtx));
>> > +                  bzero(&test2_mtx, sizeof(test2_mtx));
>> >                    mtx_init(&test1_mtx, "test1", NULL, MTX_DEF);
>> > -                  mtx_init(&test1_mtx, "test2", NULL, MTX_DEF |
>> > +                  mtx_init(&test2_mtx, "test2", NULL, MTX_DEF |
>> >                        MTX_RECURSE);
>> >  #define TRYLOCK_TEST(lock, descr) do {                                    \
>> >    status = mtx_trylock((lock));                                   \
>> 
>> Bah bah, bogus assertions.
> 
> Agreed.  I want something to *initialize* these things.  I hate one bit
> of code I have at work:
> 
>       sc->[all fields] = [appropriate values for fields]
>       bzero(&sc->mtx, sizeof sc->mtx);
>       mtx_init(&sc->mtx, "blah", NULL, MTX_DEF);
> 
> *shrug*

My bug was a real one up there that the assertion caught.  I had
double-init'd test1 and never init'd test2.  Perhaps I should break
down and add a MTX_FRESH or MTX_NEW flag that skips the assertion.
Of course, it just means that when someone does forget to init a
mutex or dose a double init they just have a really hard to track
down bug. :-/

-- 

John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20040105173009.jhb>