Skip to content

AsyncGetCallTrace errors and what they mean

Nitsan Wakart edited this page Mar 13, 2017 · 1 revision

AsyncGetCallTrace is not an official API to the JVM, and as a result it's documentation falls short of certain norms we may assosiate with the JDK. The errors show up in the codebase as follows (doc added for "clarity"):

enum {
ticks_no_Java_frame         =  0, // new thread
ticks_no_class_load         = -1, // jmethodIds are not available
ticks_GC_active             = -2, // GC action
ticks_unknown_not_Java      = -3, // ¯\_(ツ)_/¯
ticks_not_walkable_not_Java = -4, // ¯\_(ツ)_/¯
ticks_unknown_Java          = -5, // ¯\_(ツ)_/¯
ticks_not_walkable_Java     = -6, // ¯\_(ツ)_/¯
ticks_unknown_state         = -7, // ¯\_(ツ)_/¯
ticks_thread_exit           = -8, // dying thread
ticks_deopt                 = -9, // mid-deopting code
ticks_safepoint             = -10 // ¯\_(ツ)_/¯
};

Honest Profiler is reporting failed samples to the extent they occur in the hope that the user can make an observation on the number of failures and how they match their expectations. Errors show up in the logs as methods so that they fit in with the rest of the collection/representation flow. Example from the console flat profile:

Flat Profile (by line):
	(t 51.1,s 51.1) AGCT::UnknownJavaErr5 @ (bci=-1,line=-100)
	(t 18.7,s 18.7) safepoint.profiling.generated.AgctProfilingFails_systemArrayCopy_jmhTest::systemArrayCopy_avgt_jmhStub @ (bci=29,line=165)
	(t  5.3,s  5.3) safepoint.profiling.AgctProfilingFails::systemArrayCopy @ (bci=23,line=42)
	(t  5.0,s  5.0) AGCT::UnknownNotJava3 @ (bci=-1,line=-100)
	(t  1.2,s  1.2) safepoint.profiling.AgctProfilingFails::systemArrayCopy @ (bci=15,line=41)
	(t  1.2,s  1.2) safepoint.profiling.generated.AgctProfilingFails_systemArrayCopy_jmhTest::systemArrayCopy_avgt_jmhStub @ (bci=13,line=163)
	(t  1.2,s  1.2) org.openjdk.jmh.infra.Blackhole::consume @ (bci=16,line=404)