glretrace: Exit early when state dumping is not possible.

Change-Id: Ib6d8622f08aa94b2c64b4379e236ba073d42699b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/apitrace/+/2224543
Reviewed-by: Po-Hsien Wang <pwang@chromium.org>
Commit-Queue: Robert Tarasov <tutankhamen@chromium.org>
Tested-by: Robert Tarasov <tutankhamen@chromium.org>
diff --git a/retrace/retrace_main.cpp b/retrace/retrace_main.cpp
index 9111d86..ab41dd4 100644
--- a/retrace/retrace_main.cpp
+++ b/retrace/retrace_main.cpp
@@ -348,12 +348,16 @@
     }
 
     // dumpStateCallNo is 0 when fetching default state
-    if ((call->no == dumpStateCallNo || dumpStateCallNo == 0) &&
-        dumper->canDump()) {
-        StateWriter *writer = stateWriterFactory(std::cout);
-        dumper->dumpState(*writer);
-        delete writer;
-        exit(0);
+    if (call->no == dumpStateCallNo || dumpStateCallNo == 0) {
+        if (dumper->canDump()) {
+            StateWriter *writer = stateWriterFactory(std::cout);
+            dumper->dumpState(*writer);
+            delete writer;
+            exit(0);
+        } else if (dumpStateCallNo != 0) {
+            std::cerr << call->no << ": error: failed to dump state\n";
+            exit(1);
+        }
     }
 }