diff -r 3344ea7404b1 -r 2fa6ced325cc src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java --- a/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Fri Oct 04 13:41:13 2013 -0700 +++ b/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Fri Oct 04 13:59:13 2013 -0700 @@ -1034,6 +1034,13 @@ } else { discoverAndRunProcs(context, annotationsPresent, topLevelClasses, packageInfoFiles); } + } catch (Throwable t) { + // we're specifically expecting Abort here, but if any Throwable + // comes by, we should flush all deferred diagnostics, rather than + // drop them on the ground. + deferredDiagnosticHandler.reportDeferredDiagnostics(); + log.popDiagnosticHandler(deferredDiagnosticHandler); + throw t; } finally { if (!taskListener.isEmpty()) taskListener.finished(new TaskEvent(TaskEvent.Kind.ANNOTATION_PROCESSING_ROUND));