diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-12-17 08:53:02 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-12-17 08:53:02 +0200 |
commit | 8065636673e85704f5aab3ce3674dea729cd2a86 (patch) | |
tree | 12ac57f7186a13eb0ce99a4e92ac9b3a8c645d86 /build2/utility.cxx | |
parent | 733aa97b5c0024a7856df7a571b542742f0f3e65 (diff) |
Trace non-zero process exit code
Also convert to using operator<<(ostream,process_exit).
Diffstat (limited to 'build2/utility.cxx')
-rw-r--r-- | build2/utility.cxx | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/build2/utility.cxx b/build2/utility.cxx index e8e5fe9..8d63059 100644 --- a/build2/utility.cxx +++ b/build2/utility.cxx @@ -240,21 +240,27 @@ namespace build2 run_finish (const char* args[], process& pr, bool err, const string& l) try { + tracer trace ("run_finish"); + if (pr.wait ()) return true; const process_exit& e (*pr.exit); if (!e.normal ()) - fail << "process " << args[0] << " terminated abnormally: " - << e.description () << (e.core () ? " (core dumped)" : ""); + fail << "process " << args[0] << " " << e; // Normall but non-zero exit status. // if (err) - // Assuming diagnostics has already been issued (to STDERR). + { + // While we assuming diagnostics has already been issued (to STDERR), if + // that's not the case, it's a real pain to debug. So trace it. // + l4 ([&]{trace << "process " << args[0] << " " << e;}); + throw failed (); + } // Even if the user asked to suppress diagnostiscs, one error that we // want to let through is the inability to execute the program itself. |