changeset 3:8ddfdd2a8574

Add retcode to stderr to make errors such as segfaults visible
author Brendan Rius <brendan@omixy.com>
date Fri, 25 Mar 2016 14:13:22 +0000
parents b46b2e5b6c08
children 5c4b5066fab0
files c_kernel/kernel.py
diffstat 1 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/c_kernel/kernel.py	Fri Mar 25 14:08:26 2016 +0000
+++ b/c_kernel/kernel.py	Fri Mar 25 14:13:22 2016 +0000
@@ -53,16 +53,20 @@
             source_file.flush()
             with self.new_temp_file(suffix='.out') as binary_file:
                 retcode, stdout, stderr = self.compile_with_gcc(source_file.name, binary_file.name)
-                self.log.error(retcode)
-                self.log.error(stdout)
-                self.log.error(stderr)
+                if retcode != 0:
+                    stderr += "[C kernel] GCC exited with code {}".format(retcode)
+                self.log.error("GCC return code: {}".format(retcode))
+                self.log.error("GCC stdout: {}".format(stdout))
+                self.log.error("GCC stderr: {}".format(stderr))
 
         retcode, out, err = CKernel.execute_command([binary_file.name])
+        if retcode != 0:
+            stderr += "[C kernel] Executable exited with code {}".format(retcode)
+        self.log.error("Executable retcode: {}".format(retcode))
+        self.log.error("Executable stdout: {}".format(out))
+        self.log.error("Executable stderr: {}".format(err))
         stdout += out
         stderr += err
-        self.log.error(retcode)
-        self.log.error(out)
-        self.log.error(err)
 
         if not silent:
             stream_content = {'name': 'stderr', 'text': stderr}