Messages in this thread Patch in this message | | | Date | Wed, 27 May 2020 11:08:45 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH 2/3] perf jvmti: Do not report error when missing debug information |
| |
Em Wed, May 27, 2020 at 11:07:53AM -0300, Arnaldo Carvalho de Melo escreveu: > Em Mon, Apr 27, 2020 at 02:15:15PM +0800, Nick Gasson escreveu: > > If the Java sources are compiled with -g:none to disable debug > > information the perf JVMTI plugin reports a lot of errors like: > > > > java: GetLineNumberTable failed with JVMTI_ERROR_ABSENT_INFORMATION > > java: GetLineNumberTable failed with JVMTI_ERROR_ABSENT_INFORMATION > > java: GetLineNumberTable failed with JVMTI_ERROR_ABSENT_INFORMATION > > java: GetLineNumberTable failed with JVMTI_ERROR_ABSENT_INFORMATION > > java: GetLineNumberTable failed with JVMTI_ERROR_ABSENT_INFORMATION > > > > Instead if GetLineNumberTable returns JVMTI_ERROR_ABSENT_INFORMATION > > simply skip emitting line number information for that method. Unlike the > > previous patch these errors don't affect the jitdump generation, they > > just generate a lot of noise. > > > > Similarly for native methods which also don't have line tables. > > > > Signed-off-by: Nick Gasson <nick.gasson@arm.com> > > --- > > tools/perf/jvmti/libjvmti.c | 13 +++++++++++-- > > 1 file changed, 11 insertions(+), 2 deletions(-) > > > > diff --git a/tools/perf/jvmti/libjvmti.c b/tools/perf/jvmti/libjvmti.c > > index 50ef524b5cd4..a9a056d68416 100644 > > --- a/tools/perf/jvmti/libjvmti.c > > +++ b/tools/perf/jvmti/libjvmti.c > > @@ -41,7 +41,11 @@ do_get_line_numbers(jvmtiEnv *jvmti, void *pc, jmethodID m, jint bci, > > jvmtiError ret; > > > > ret = (*jvmti)->GetLineNumberTable(jvmti, m, &nr_lines, &loc_tab); > > - if (ret != JVMTI_ERROR_NONE) { > > + if (ret == JVMTI_ERROR_ABSENT_INFORMATION || ret == JVMTI_ERROR_NATIVE_METHOD) { > > + /* No debug information for this method */ > > + *nr = 0; > > + return JVMTI_ERROR_NONE; > > + } else if (ret != JVMTI_ERROR_NONE) { > > print_error(jvmti, "GetLineNumberTable", ret); > > return ret; > > } > > @@ -93,6 +97,9 @@ get_line_numbers(jvmtiEnv *jvmti, const void *compile_info, jvmti_line_info_t ** > > /* free what was allocated for nothing */ > > (*jvmti)->Deallocate(jvmti, (unsigned char *)lne); > > nr_total += (int)nr; > > + } else if (ret == JVMTI_ERROR_ABSENT_INFORMATION > > + || ret == JVMTI_ERROR_NATIVE_METHOD) { > > Please add the || operator at the end of the line next time, I'm fixing > this up this time, > > Applied,
This:
diff --git a/tools/perf/jvmti/libjvmti.c b/tools/perf/jvmti/libjvmti.c index a9a056d68416..c5d30834a64c 100644 --- a/tools/perf/jvmti/libjvmti.c +++ b/tools/perf/jvmti/libjvmti.c @@ -97,8 +97,8 @@ get_line_numbers(jvmtiEnv *jvmti, const void *compile_info, jvmti_line_info_t ** /* free what was allocated for nothing */ (*jvmti)->Deallocate(jvmti, (unsigned char *)lne); nr_total += (int)nr; - } else if (ret == JVMTI_ERROR_ABSENT_INFORMATION - || ret == JVMTI_ERROR_NATIVE_METHOD) { + } else if (ret == JVMTI_ERROR_ABSENT_INFORMATION || + ret == JVMTI_ERROR_NATIVE_METHOD) { /* No debug information for this method */ } else { print_error(jvmti, "GetLineNumberTable", ret);
| |