[prev in list] [next in list] [prev in thread] [next in thread]
List: opensolaris-dtrace-discuss
Subject: Re: [dtrace-discuss] dtrace and kmem heap corruption ?
From: Jonathan Adams <jonathan.adams () oracle ! com>
Date: 2011-02-18 23:42:13
Message-ID: 20110218234213.GB615160 () eng ! sun ! com
[Download RAW message or body]
On Fri, Feb 18, 2011 at 05:51:35PM -0500, Peter Shoults wrote:
> Hi,
>
> I wrote a dtrace script that is tracking a couple of routines that
> decrement a reference count, trying to catch the thread that
> de-references the count down to -1. The script works fine, except for
> some reason, I suspect it is not recording the last few decrements.
> Probably best to show what I mean:
>
> from msgbuf of corefile:
>
> kernel memory allocator: buffer modified after being freed
> modification occurred at offset 0x0 (0xdeadbeefdeadbeef replaced by
> 0xdeadbeeedeadbeef)
> buffer=3004ec26af8 bufctl=3004ec65d20 cache: kmem_alloc_56
^^^^^^^^^^^
Have you done:
3004ec65d20::bufctl -v
and printed the "CONTENTS" field as a credgrp_t?
> Now, grepping for that bufaddr on my dtrace script output...
>
>
> 1 20287 crgrprele:entry cred_ptr is 3004ec26af8, cred ref = 5
> 1 20287 crgrprele:entry cred_ptr is 3004ec26af8, cred ref = 5
> 1 20287 crgrprele:entry cred_ptr is 3004ec26af8, cred ref = 5
> 1 20287 crgrprele:entry cred_ptr is 3004ec26af8, cred ref = 4
> 1 20287 crgrprele:entry cred_ptr is 3004ec26af8, cred ref = 3
> #
>
> I have to believe we decremented down to zero and freed, then again,
> maybe we did not decrement down to zero and still freed, and then when
> buffer was on free list, we tried to decrement thinking we still had to
> and we were still active. Either way - what can I do to catch what I
> believe must have been at least one more decrement - it is seems as if
> the decrement occurred, and we went belly up so quickly dtrace never had
> a chance to record the decrement.
>
> Anyway - if there is a way to boost what dtrace can capture, or ensure
> it actually records when an event is triggered...that would be nice.
There are DCMDs in mdb to dump the in-kernel dtrace state:
::dtrace_state
lists the active dtrace consumers, and
addr::dtrace
will process the in-kernel state for a particular consumer.
Cheers,
- jonathan
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic