Shark failing to get entire stack

Jonathan Watt <[email protected]> Sat, 13 Nov 2010 20:13:41 +0000
Newsgroups gmane.comp.mozilla.performance
Message-ID <[email protected]>
I'm using Shark to try to profile a bug in the official FF4 beta 7 Mac build
which is causing Firefox to sit at 100% CPU, while minimized, with no tabs of
interest (as far as I can tell) open.

	0.0%	54.6%	XUL	nsCanvasRenderingContext2D::
                                  DrawImage(nsIDOMElement*, float, float,
                                    float, float, float, float, float,
                                    float, unsigned char)
	0.0%	54.6%	XUL	 moz_cairo_fill_preserve
	0.0%	54.6%	XUL	  cairo_gstate_fill
	0.0%	54.5%	XUL	   cairo_surface_fill
	0.0%	54.5%	XUL	    cairo_quartz_surface_fill
	0.0%	54.1%	XUL	     cairo_quartz_draw_image
	0.0%	54.1%	CoreGraphics	      CGContextDrawImage
	0.0%	54.1%	libRIP.A.dylib	       ripc_DrawImage
	0.0%	53.9%	libRIP.A.dylib	        ripc_RenderImage
	0.0%	53.9%	libRIP.A.dylib	         ripl_BltImage
	0.0%	53.4%	libRIP.A.dylib	          ripl_Mark
	0.0%	53.4%	CoreGraphics	           argb32_image
	10.5%	53.4%	CoreGraphics	            argb32_image_mark
	42.9%	42.9%	CoreGraphics	             argb32_sample_ARGB32

My first problem is that in Top-Down Tree view Shark claims that
nsCanvasRenderingContext2D::DrawImage is the top of the call stack, which of
course is nonsense. Does anyone know why it's doing that, and how I can get it
to figure out/display the full call stack?

I'm also seeing a lot of "Unknown Library" entries without symbols. For example:

	0.0%	0.3%	XUL	js::mjit::JaegerShot(JSContext*)
	0.1%	0.1%	Unknown Library	 0x1145ee000 [621.5KB]
	0.0%	0.0%	XUL	 js::mjit::stubs::ValueToBoolean(js::VMFrame&)
	0.0%	0.0%	XUL	 js::mjit::stubs::UncachedCallHelper(
                                   js::VMFrame&, unsigned int,
                                   js::mjit::stubs::UncachedCallResult*)
	0.0%	0.0%	Unknown Library	 0x1327b3eb8 [unknown]
	0.0%	0.0%	Unknown Library	 0x1269e61c9 [unknown]
	0.0%	0.0%	Unknown Library	 0x1264fa228 [unknown]
	0.0%	0.0%	Unknown Library	 0x1264f4460 [unknown]
	0.0%	0.0%	Unknown Library	 0x1224fe2e4 [unknown]
	0.0%	0.0%	Unknown Library	 0x11d067c9e [unknown]
	0.0%	0.0%	Unknown Library	 0x11477febc [unknown]

This is with KernelDebugKit mounted. Does anyone know how I can get Shark to
identify these libraries and find the symbols for these things too?

Jonathan