Bug 894 - ./waf --run error message upon segfault
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Fri, 23 Apr 2010 15:55:15 +0100
changeset 6275 77f833c7ddae
parent 6274 3e8b3f2306c9
child 6276 3b7ec0d36079
Bug 894 - ./waf --run error message upon segfault
wutils.py
--- a/wutils.py	Fri Apr 23 15:46:46 2010 +0100
+++ b/wutils.py	Fri Apr 23 15:55:15 2010 +0100
@@ -147,7 +147,20 @@
             except WindowsError, ex:
                 raise Utils.WafError("Command %s raised exception %s" % (argv, ex))
     if retval:
-        raise Utils.WafError("Command %s exited with code %i" % (argv, retval))
+        signame = None
+        if retval < 0: # signal?
+            import signal
+            for name, val in vars(signal).iteritems():
+                if len(name) > 3 and name[:3] == 'SIG' and name[3] != '_':
+                    if val == -retval:
+                        signame = name
+                        break
+        if signame:
+            raise Utils.WafError("Command %s terminated with signal %s."
+                                 " Run it under a debugger to get more information "
+                                 "(./waf --run <program> --command-template=\"gdb --args %%s <args>\")." % (argv, signame))
+        else:
+            raise Utils.WafError("Command %s exited with code %i" % (argv, retval))
     return retval
 
 def get_run_program(program_string, command_template=None):