pandad.cc should receive same SIGTERM and exit

old-commit-hash: afc5ef6b916c54ac2ec471d144f601ead71250cb
pull/32103/head
Shane Smiskol 1 year ago
parent 6927015b45
commit 8ae9025323
  1. 13
      selfdrive/pandad/pandad.py

@ -5,7 +5,6 @@ import usb1
import time import time
import signal import signal
import subprocess import subprocess
import sys
from typing import NoReturn from typing import NoReturn
from panda import Panda, PandaDFU, PandaProtocolMismatch, FW_PATH from panda import Panda, PandaDFU, PandaProtocolMismatch, FW_PATH
@ -65,17 +64,12 @@ def flash_panda(panda_serial: str) -> Panda:
def main() -> NoReturn: def main() -> NoReturn:
# override manager's immediate SystemExit to allow pandad to exit gracefully # override manager's immediate SystemExit to allow pandad to exit gracefully
do_exit = False
def signal_handler(signum, frame): def signal_handler(signum, frame):
nonlocal do_exit, process nonlocal do_exit
do_exit = True do_exit = True
cloudlog.warning(f"caught signal {signum}, exiting") cloudlog.warning(f"caught signal {signum}, exiting")
if process is not None:
process.terminate()
sys.exit(0)
do_exit = False
signal.signal(signal.SIGTERM, signal_handler) signal.signal(signal.SIGTERM, signal_handler)
count = 0 count = 0
@ -176,8 +170,7 @@ def main() -> NoReturn:
# run pandad with all connected serials as arguments # run pandad with all connected serials as arguments
os.environ['MANAGER_DAEMON'] = 'pandad' os.environ['MANAGER_DAEMON'] = 'pandad'
os.chdir(os.path.join(BASEDIR, "selfdrive/pandad")) os.chdir(os.path.join(BASEDIR, "selfdrive/pandad"))
process = subprocess.Popen(["./pandad", *panda_serials]) subprocess.run(["./pandad", *panda_serials], check=True)
process.wait()
if __name__ == "__main__": if __name__ == "__main__":
main() main()

Loading…
Cancel
Save