findbugs-slf4j icon indicating copy to clipboard operation
findbugs-slf4j copied to clipboard

Exception while looking for class java/lang/Thread$UncaughtExceptionHandler

Open talios opened this issue 7 years ago • 4 comments

Under Java 9, both findbugs and spotbugs seem to fail when running the findbugs-slf4j checks on our usage of Thread.UncaughtExceptionHandler with the following:

private static final UncaughtExceptionHandler uncaughtExceptionHandler =
    (t, e) -> LOG.error(format("Unhandled thread exception %s: %s", t.getName(), e.getMessage()), e);

The exception is:

 [java] Exception in thread "main" java.lang.AssertionError: java.lang.ClassNotFoundException: Exception while looking for class java/lang/Thread$UncaughtExceptionHandler
 [java] 	at jp.skypencil.findbugs.slf4j.IllegalPassedClassDetector.memorizeResultOfGetClassMethod(IllegalPassedClassDetector.java:64)
 [java] 	at jp.skypencil.findbugs.slf4j.IllegalPassedClassDetector.afterOpcode(IllegalPassedClassDetector.java:32)
 [java] 	at edu.umd.cs.findbugs.visitclass.DismantleBytecode.visit(DismantleBytecode.java:884)
 [java] 	at edu.umd.cs.findbugs.visitclass.BetterVisitor.visitCode(BetterVisitor.java:218)
 [java] 	at edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitCode(PreorderVisitor.java:243)
 [java] 	at edu.umd.cs.findbugs.bcel.OpcodeStackDetector.visitCode(OpcodeStackDetector.java:65)
 [java] 	at org.apache.bcel.classfile.Code.accept(Code.java:132)
 [java] 	at edu.umd.cs.findbugs.visitclass.PreorderVisitor.doVisitMethod(PreorderVisitor.java:315)
 [java] 	at edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitJavaClass(PreorderVisitor.java:403)

talios avatar Apr 04 '18 04:04 talios

Actually - this seems to be triggering under Java 8 as well.

talios avatar Apr 09 '18 02:04 talios

So... thumbs up - what does that mean? Is this a known issue? Any idea how it could be resolved ( is it a bug in the plugin, or possibly my project? )?

talios avatar Apr 17 '18 10:04 talios

I've been able to reliably reproduce this with a parallel build and disabling spotbugs forking.

mvn clean verify -T 1C -Dspotbugs.fork=false

Caused by: java.lang.AssertionError: java.lang.ClassNotFoundException: Exception while looking for class com/company/project/Service
    at jp.skypencil.findbugs.slf4j.IllegalPassedClassDetector.memorizeResultOfGetClassMethod (IllegalPassedClassDetector.java:80)
    at jp.skypencil.findbugs.slf4j.IllegalPassedClassDetector.afterOpcode (IllegalPassedClassDetector.java:42)
    at edu.umd.cs.findbugs.visitclass.DismantleBytecode.visit (DismantleBytecode.java:884)

mattnelson avatar Sep 19 '18 21:09 mattnelson

1.4.1 has related fix, that stops throwing exception: 042a74c0ff92a505cdcd49920217dbd92ff1658a

But this doesn't solve root problem. I cannot reproduce this issue for now. I guest it is caused by thread unsafety of Apache BCEL.

KengoTODA avatar Oct 10 '18 06:10 KengoTODA