Skip to content

Commit 7e7eba3

Browse files
authored
Merge pull request #211 from bulasevich/GR-67895
[Backport] [Oracle GraalVM] [GR-67895] Backport to 23.1: Print stack trace of UserException causes.
2 parents 7b21ceb + ffca637 commit 7e7eba3

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/NativeImageGeneratorRunner.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
import java.util.Set;
4444
import java.util.TimerTask;
4545
import java.util.concurrent.ForkJoinPool;
46-
import java.util.function.Consumer;
4746
import java.util.stream.Collectors;
4847

4948
import org.graalvm.collections.Pair;
@@ -557,7 +556,7 @@ private int buildImage(ImageClassLoader classLoader) {
557556
NativeImageGeneratorRunner.reportFatalError(e, "FallbackImageRequest while building fallback image.");
558557
return ExitStatus.BUILDER_ERROR.getValue();
559558
}
560-
reportUserException(e, parsedHostedOptions, LogUtils::warning);
559+
reportUserException(e, parsedHostedOptions);
561560
return ExitStatus.FALLBACK_IMAGE.getValue();
562561
} catch (ParsingError e) {
563562
NativeImageGeneratorRunner.reportFatalError(e);
@@ -584,7 +583,7 @@ private int buildImage(ImageClassLoader classLoader) {
584583
}
585584

586585
if (pee.getExceptions().size() > 1) {
587-
System.err.println(pee.getExceptions().size() + " fatal errors detected:");
586+
System.out.println(pee.getExceptions().size() + " fatal errors detected:");
588587
}
589588
for (Throwable exception : pee.getExceptions()) {
590589
NativeImageGeneratorRunner.reportFatalError(exception);
@@ -670,8 +669,8 @@ public static void printCPUFeatures(Platform platform) {
670669
* @param e error to be reported.
671670
*/
672671
protected static void reportFatalError(Throwable e) {
673-
System.err.print("Fatal error: ");
674-
e.printStackTrace();
672+
System.out.print("Fatal error: ");
673+
e.printStackTrace(System.out);
675674
}
676675

677676
/**
@@ -681,8 +680,8 @@ protected static void reportFatalError(Throwable e) {
681680
* @param msg message to report.
682681
*/
683682
protected static void reportFatalError(Throwable e, String msg) {
684-
System.err.print("Fatal error: " + msg);
685-
e.printStackTrace();
683+
System.out.print("Fatal error: " + msg);
684+
e.printStackTrace(System.out);
686685
}
687686

688687
/**
@@ -691,7 +690,7 @@ protected static void reportFatalError(Throwable e, String msg) {
691690
* @param msg error message that is printed.
692691
*/
693692
public static void reportUserError(String msg) {
694-
System.err.println("Error: " + msg);
693+
System.out.println("Error: " + msg);
695694
}
696695

697696
/**
@@ -701,20 +700,28 @@ public static void reportUserError(String msg) {
701700
* @param parsedHostedOptions
702701
*/
703702
public static void reportUserError(Throwable e, OptionValues parsedHostedOptions) {
704-
reportUserException(e, parsedHostedOptions, NativeImageGeneratorRunner::reportUserError);
703+
reportUserException(e, parsedHostedOptions);
705704
}
706705

707-
private static void reportUserException(Throwable e, OptionValues parsedHostedOptions, Consumer<String> report) {
706+
private static void reportUserException(Throwable e, OptionValues parsedHostedOptions) {
708707
if (e instanceof UserException ue) {
709708
for (String message : ue.getMessages()) {
710-
report.accept(message);
709+
reportUserError(message);
711710
}
712711
} else {
713-
report.accept(e.getMessage());
712+
reportUserError(e.getMessage());
713+
}
714+
Throwable current = e.getCause();
715+
while (current != null) {
716+
System.out.print("Caused by: ");
717+
current.printStackTrace(System.out);
718+
current = current.getCause();
714719
}
715720
if (parsedHostedOptions != null && NativeImageOptions.ReportExceptionStackTraces.getValue(parsedHostedOptions)) {
716-
e.printStackTrace();
721+
System.out.print("Internal exception: ");
722+
e.printStackTrace(System.out);
717723
}
724+
System.out.flush();
718725
}
719726

720727
public int build(ImageClassLoader imageClassLoader) {

0 commit comments

Comments
 (0)