From 4eba79d0007d48b9c056a8621309797cf7977fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Andr=C3=A9=20Vadla=20Ravn=C3=A5s?= Date: Mon, 15 Jun 2015 18:30:11 +0200 Subject: [PATCH] Fix REPL hang when target crashes during evaluation of expression --- src/frida/repl.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/frida/repl.py b/src/frida/repl.py index 3ef0773..1e1ba9a 100644 --- a/src/frida/repl.py +++ b/src/frida/repl.py @@ -155,6 +155,8 @@ def main(): output = hexdump(value).rstrip("\n") else: output = json.dumps(value, sort_keys=True, indent=4, separators=(",", ": ")) + except frida.InvalidOperationError: + return except Exception as ex: error = ex.message output = Fore.RED + Style.BRIGHT + error['name'] + Style.RESET_ALL + ": " + error['message'] @@ -268,7 +270,9 @@ def main(): self._reactor.schedule(lambda: self._script.post_message({'name': '.evaluate', 'payload': {'expression': text}})) with self._response_cond: while self._response_data is None: - self._response_cond.wait() + if not self._reactor.is_running(): + raise frida.InvalidOperationError("Invalid operation while stopping") + self._response_cond.wait(0.5) response = self._response_data self._response_data = None stanza, data = response