mlx driver related kernel panic in Freebsd 5.2.1-RELEASE
Jonathan Weiss
tomonage2 at gmx.de
Sun Feb 29 13:10:05 PST 2004
> 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
>>> @@ -1554,8 +1554,8 @@
>>> 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
More information about the freebsd-current
mailing list