Re: mlx driver related kernel panic in Freebsd 5.2.1-RELEASE

From: Jonathan Weiss <tomonage2_at_gmx.de>
Date: Sun, 29 Feb 2004 22:10:05 +0100
> Jonathan Weiss wrote:
>>> Jonathan Weiss wrote:
>>> 
>>>>>> OK, I seem to be able to get FreeBSD 5.2.1-RELEASE to reliably panic with
>>>>>> a "panic: free: address 0xd8d5e000(0xd8d5e000) has not been allocated."
>>>>>> on
>>>>>> the serial console when it crashes.
>>>>>> 
>>>>>> I'm doing two copies of the entire ports collection to seperate
>>>>>> subdirectories when the crash occurs. It seems to do this regardless of
>>>>>> 
>>>>>> The machine is an IBM Netfinity 5500 with 4 x 550Mhz P3 Xeon CPUS, 2gigs
>>>>>> of ram and a Mylex DAC1100 RAID controller. There are 6 73G disks
>>>>>> attached
>>>>>> to channel 0 of the controller, 5 disks are in a RAID 5 array, the sixth
>>>>>> is a hot spare.
>>>>>> 
>>>>>> Any ideas?
>>>>> 
>>>>> I see the same here with my p2 400 and a Mylex DAC960PL and 5x4,5 GB HDDs.
>>>>> Installing 5.2.1-RC2 fails with the same panic.
>>>>> 5.1 worked flawlessly.
>>>>> 
>>>>> Jonathan Weiss
>>>> 
>>>> 
>>>> Sorry for replying to myself, but I tried a snapshot (28/2/04) and got the
>>>> same panic. Installing 5.1 is working and until the end of january I also
>>>> had current without problems on this machine. I am not sure, but I think
>>>> that i also had 5.2.1-RC1 on this machine without problems, so the problem
>>>> may be introduced not long ago.
>>>> 
>>>> Thank you,
>>>> Jonathan Weiss
>>>> 
>>> 
>>> Can you try the attached patch?
>>> 
>>> Scott
>>> 
>>> Index: mlx.c
>>> ===================================================================
>>> RCS file: /usr/ncvs/src/sys/dev/mlx/mlx.c,v
>>> retrieving revision 1.44
>>> diff -u -r1.44 mlx.c
>>> --- mlx.c    22 Feb 2004 09:52:46 -0000    1.44
>>> +++ mlx.c    28 Feb 2004 17:48:59 -0000
>>> _at__at_ -1554,8 +1554,8 _at__at_
>>>   if ((mc->mc_complete == NULL) && (mc != NULL))
>>> mlx_releasecmd(mc);
>>>   /* we got an error, and we allocated a result */
>>> -    if ((error != 0) && (mc->mc_data != NULL)) {
>>> -    free(mc->mc_data, M_DEVBUF);
>>> +    if ((error != 0) && (result != NULL)) {
>>> +    free(result, M_DEVBUF);
>>> mc->mc_data = NULL;
>>>   }
>>>   return(result);
>>> 
>> 
>> 
>> I tried the patch, but i still get the same panic :-(
>> 
>> Maybe i did something wrong because it was the first time I built a release.
>> I cvsupped the cvs-tree to /home/ncvs with the
>> /usr/share/examples/cvsup/cvs-supfile, apllied your patch to
>> /home/ncvs/src/sys/dev/mlx/mlx.c,v. Then a checked src out from /home/ncvs
>> to /usr/src and did a buildworld.
>> 
>> After building the world, I did:
>> 
>> Cd release
>> make release CHROOTDIR=/home/mille/release BUILDNAME=5.2-MLX
>> CVSROOT=/home/ncvs MAKE_ISOS=yes NODOC=yes NO_FLOPPIES=yes NOPORTREADMES=yes
>> NOPORTS=yes
>> 
>> I then burned the miniinst.iso from /home/ncvs/release/R/cdrom.
>> 
>> Were these steps correct?
>> 
>> Thank you,
>> Jonathan 
>> 
>> 
> 
> Editing the repo by hand is generally not a good idea ;-)  Patches can
> be inserted into the release build process via the LOCAL_PATCHES
> variable in /usr/src/release/Makefile.  The patchfile needs to be
> relative to /usr/src, IIRC, so you would have to make a minor change to
> the patch that I sent out.  In any case, you should look in
> /home/mille/release/usr/src/sys/dev/mlx/mlx.c to see if it contains the
> changed lines.  If so, then I'm rather surprised that the panic still
> happens in the same place.
> 
> Scott

Hi Scott,


First, thank you for your help :-)
When I type 1554G im vi /home/mille/release/src/sys/dev/mlx/mlx.c I get:

 out:
    /* we got a command, but nobody else will free it */
    if ((mc->mc_complete == NULL) && (mc != NULL))
        mlx_releasecmd(mc);
    /* we got an error, and we allocated a result */
    if ((error != 0) && (result != NULL)) {
        free(result, M_DEVBUF);
        mc->mc_data = NULL;
    }
    return(result);

So I think, that you changes are included. If i understand you right, in
general I should not apply the patch to my cvs-tree but to a checket out
version? But the file named in the patchfile was the mlx.c,v , so i thought
that i should patch the file in the repository.

Was it also possible to patch the checked out file with this patch? Or was
it needed to change it?

You said, that I should change the patch file to be relative to /usr/src,
which part should have been changed? The RCS file:
/usr/ncvs/src/sys/dev/mlx/mlx.c,v? Into what?


Sorry for so many questions but i not very familliar with RCS/CVS and I am
Trying to learn it.

Anyway, I still get the panic with your patch and I think that I applied I
correctly (I hope).


Thank you,
Jonathan Weiss
Received on Sun Feb 29 2004 - 12:10:05 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:45 UTC