def killAndGetStack(self, process, utilityPath, debuggerInfo, dump_screen=False): """ Kill the process, preferrably in a way that gets us a stack trace. Also attempts to obtain a screenshot before killing the process if specified. """ if dump_screen: self.dumpScreen(utilityPath) if mozinfo.info.get('crashreporter', True) and not debuggerInfo: if mozinfo.isWin: # We should have a "crashinject" program in our utility path crashinject = os.path.normpath( os.path.join(utilityPath, "crashinject.exe")) if os.path.exists(crashinject): status = subprocess.Popen([crashinject, str(process.pid)]).wait() printstatus("crashinject", status) if status == 0: return else: try: process.kill(sig=signal.SIGABRT) except OSError: # https://bugzilla.mozilla.org/show_bug.cgi?id=921509 self.log.info( "Can't trigger Breakpad, process no longer exists") return self.log.info("Can't trigger Breakpad, just killing process") process.kill()
def killAndGetStack(self, process, utilityPath, debuggerInfo, dump_screen=False): """ Kill the process, preferrably in a way that gets us a stack trace. Also attempts to obtain a screenshot before killing the process if specified. """ if dump_screen: self.dumpScreen(utilityPath) if mozinfo.info.get('crashreporter', True) and not debuggerInfo: if mozinfo.isWin: # We should have a "crashinject" program in our utility path crashinject = os.path.normpath( os.path.join(utilityPath, "crashinject.exe")) if os.path.exists(crashinject): status = subprocess.Popen( [crashinject, str(process.pid)]).wait() printstatus("crashinject", status) if status == 0: return else: try: process.kill(sig=signal.SIGABRT) except OSError: # https://bugzilla.mozilla.org/show_bug.cgi?id=921509 self.log.info("Can't trigger Breakpad, process no longer exists") return self.log.info("Can't trigger Breakpad, just killing process") process.kill()