From 529047a829f7da4317de6dca88396687bceedddd Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Sun, 20 Sep 2026 11:24:17 -0700 Subject: [PATCH] Validate paired route identity and allow owned Mac cleanup to finish --- roadscore/prototype/paired_showcase.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/roadscore/prototype/paired_showcase.py b/roadscore/prototype/paired_showcase.py index 95e832972b..d8a4a9f3ae 100644 --- a/roadscore/prototype/paired_showcase.py +++ b/roadscore/prototype/paired_showcase.py @@ -185,10 +185,13 @@ def read_ready(path, route): def stop_mac(process): if process is not None and process.poll() is None: - os.killpg(process.pid,signal.SIGTERM) - try:process.wait(timeout=12) + try:os.killpg(process.pid,signal.SIGTERM) + except ProcessLookupError:return + try:process.wait(timeout=25) except subprocess.TimeoutExpired: - os.killpg(process.pid,signal.SIGKILL);process.wait(timeout=5) + try:os.killpg(process.pid,signal.SIGKILL) + except ProcessLookupError:return + process.wait(timeout=5) def native_pair_main(): @@ -231,6 +234,7 @@ def native_pair_main(): if process.poll() is not None:raise RuntimeError('Mac replay failed to prepare; see '+str(out/'mac.log')) ready=peer.call('demo_ready',{}) if ready.get('request_id')!=request_id:raise RuntimeError('Device demo ownership changed') + if ready.get('route')!=selected['route']:raise RuntimeError('Comma and Mac showcase routes do not match') if ready.get('failure'):raise RuntimeError(ready['failure']) if not ready.get('running'):raise RuntimeError('Saved comma demo failed to prepare') local=read_ready(mac_out/'demo_ready.json',selected['route'])