From 6edf2eb36470b623597668a7a97153544f568a40 Mon Sep 17 00:00:00 2001 From: Artemiy Bulavin Date: Fri, 20 Jun 2025 13:45:17 +0100 Subject: [PATCH] [MLIR] Print more user-friendly error message when generating local reproducer and threading is enabled (#144905) --- mlir/lib/Pass/PassManagerOptions.cpp | 8 ++++++++ mlir/test/mlir-opt/local-reproducer-with-threading.mlir | 7 +++++++ 2 files changed, 15 insertions(+) create mode 100644 mlir/test/mlir-opt/local-reproducer-with-threading.mlir diff --git a/mlir/lib/Pass/PassManagerOptions.cpp b/mlir/lib/Pass/PassManagerOptions.cpp index dd119a75f406..305bf72bb479 100644 --- a/mlir/lib/Pass/PassManagerOptions.cpp +++ b/mlir/lib/Pass/PassManagerOptions.cpp @@ -146,6 +146,14 @@ LogicalResult mlir::applyPassManagerCLOptions(PassManager &pm) { if (!options.isConstructed()) return failure(); + if (options->reproducerFile.getNumOccurrences() && options->localReproducer && + pm.getContext()->isMultithreadingEnabled()) { + emitError(UnknownLoc::get(pm.getContext())) + << "Local crash reproduction may not be used without disabling " + "mutli-threading first."; + return failure(); + } + // Generate a reproducer on crash/failure. if (options->reproducerFile.getNumOccurrences()) pm.enableCrashReproducerGeneration(options->reproducerFile, diff --git a/mlir/test/mlir-opt/local-reproducer-with-threading.mlir b/mlir/test/mlir-opt/local-reproducer-with-threading.mlir new file mode 100644 index 000000000000..8e94f4edb91b --- /dev/null +++ b/mlir/test/mlir-opt/local-reproducer-with-threading.mlir @@ -0,0 +1,7 @@ +// Test that attempting to create a local crash reproducer without disabling threading +// prints an error from the pass manager (as opposed to crashing with a stack trace). + +// RUN: mlir-opt --verify-diagnostics --mlir-pass-pipeline-local-reproducer \ +// RUN: --mlir-pass-pipeline-crash-reproducer=%t %s + +// expected-error@unknown {{Local crash reproduction may not be used without disabling mutli-threading first.}}