OpenSolaris

Printable Version Enter a New Search
Bug ID 6713149
Synopsis x64 kernel profile call stacks missing a frame
State 11-Closed:Duplicate (Closed)
Category:Subcategory kernel:dtrace
Keywords ssd-perf
Reported Against snv_85 , s10u5_09
Duplicate Of 4855333
Introduced In
Commit to Fix
Fixed In
Release Fixed
Related Bugs
Submit Date 11-June-2008
Last Update Date 11-November-2008
Description
The profile provider in many cases fails to report the stack frame nearest the PC.

This occurs whether a Dtrace script is used -

profile:::profile-479
/arg0/
{
    @a["!",stack(50)]  = count();
}

or lockstat -I -s 50.

We have to accept genuine cases of optimized tail calls will omit frames
as in those cases, the frames are not present.  But these are not tail calls
and are among the hottest call stacks in a profile.

  !
              unix`mutex_enter+0x10
              unix`av_dispatch_autovect+0x78
              unix`intr_thread+0x5f
              490
  !
              unix`ddi_get32+0x14
              unix`av_dispatch_autovect+0x78
              unix`intr_thread+0x5f
              539
  !

It's actually the HBA xx_intr() routine calling ddi_get32() and mutex_enter().

Failing to include the true caller can leading to significant error and
misinterpretation of gprof/generated style profiles such as lockstat -g.

In some cases, the call stacks appear to be intact, but in many (?half) the
frame nearest the PC is missing.
Work Around
N/A
Comments
N/A