lhutton1 commented on a change in pull request #10214:
URL: https://github.com/apache/tvm/pull/10214#discussion_r815032100



##########
File path: tests/python/relay/aot/aot_test_utils.py
##########
@@ -225,35 +225,43 @@ def parametrize_aot_options(test):
     )(test)
 
 
-def subprocess_log_output(cmd, cwd, logfile):
+def subprocess_check_log_output(cmd, cwd, logfile):
     """
     This method runs a process and logs the output to both a log file and 
stdout
     """
     _LOG.info("Execute (%s): %s", cwd, cmd)
     cmd_base = cmd[0] if isinstance(cmd, (list, tuple)) else cmd.split(" ", 
1)[0]
     proc = subprocess.Popen(
-        cmd, cwd=cwd, shell=True, bufsize=0, stdout=subprocess.PIPE, 
stderr=subprocess.STDOUT
+        cmd,
+        cwd=cwd,
+        shell=True,
+        bufsize=0,
+        stdout=subprocess.PIPE,
+        stderr=subprocess.STDOUT,
+        encoding="utf-8",
     )
-    with open(logfile, "ab") as f:
-        f.write(
-            bytes(
-                "\n"
-                + "-" * 80
-                + f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: 
Execute ({cwd}): {cmd}\n"
-                + "-" * 80,
-                "utf-8",
-            )
+    with open(logfile, "a") as f:
+        msg = (
+            "\n"
+            + "-" * 80
+            + f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: 
Execute ({cwd}): {cmd}\n"
+            + "-" * 80
         )
+        f.write(msg)
         while True:
             data = proc.stdout.readline()
-            _LOG.debug("%s: %s", cmd_base, str(data, "utf-8", 
"replace").rstrip("\n"))
+            _LOG.debug("%s: %s", cmd_base, data.rstrip("\n"))
             f.write(data)
 
             # process is done if there is no data and the result is valid
             if not data:  # EOF
                 break
 
-    return proc.wait()
+    proc.wait()
+    if proc.returncode != 0:
+        raise RuntimeError(
+            f"Subprocess failed: 
{cmd}\nstdout:\n{proc.stdout}\nstderr:\n{proc.stderr}"

Review comment:
       The last run on CI luckily hit a flaky test, although the Runtime Error 
doesn't really give many details currently: 
   ```
   RuntimeError: Subprocess failed: make -f 
/workspace/tests/python/relay/aot/corstone300.mk 
build_dir=/tmp/tmpqlaqvgf3/test/build 
CFLAGS='-DTVM_RUNTIME_ALLOC_ALIGNMENT_BYTES=8 ' 
TVM_ROOT=/workspace/tests/python/relay/aot/../../../.. 
AOT_TEST_ROOT=/workspace/tests/python/relay/aot 
CODEGEN_ROOT=/tmp/tmpqlaqvgf3/test/codegen 
STANDALONE_CRT_DIR=/workspace/build/standalone_crt 
FVP_DIR=/opt/arm/FVP_Corstone_SSE-300/models/Linux64_GCC-6.4/ run
   E           stdout:
   E           <_io.TextIOWrapper name=7 encoding='utf-8'>
   E           stderr:
   E           None
   ```
   
   I tried to change `proc.stdout` to something like `proc.stdout.read()` but 
this just returns an empty string, presumably because the lines are already 
read above. There will also be no stderr since this is passed to stdout in the 
subprocess declaration.
   
   We could make the error visibly by adding the contents of the log file to 
the error message, although this isn't very elegant. Any other ideas?




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to