diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py index c7f501bccf..4d4e1706b9 100755 --- a/selfdrive/athena/athenad.py +++ b/selfdrive/athena/athenad.py @@ -412,6 +412,7 @@ def backoff(retries): def main(): params = Params() dongle_id = params.get("DongleId", encoding='utf-8') + crash.init() crash.bind_user(id=dongle_id) crash.bind_extra(dirty=dirty, origin=origin, branch=branch, commit=commit, device=HARDWARE.get_device_type()) diff --git a/selfdrive/crash.py b/selfdrive/crash.py index c8d1ecda98..b4b24da8cb 100644 --- a/selfdrive/crash.py +++ b/selfdrive/crash.py @@ -1,40 +1,28 @@ """Install exception handler for process crash.""" -import os import sys import capnp -from selfdrive.hardware import PC from selfdrive.swaglog import cloudlog from selfdrive.version import version -if os.getenv("NOLOG") or os.getenv("NOCRASH") or PC: - def capture_exception(*args, **kwargs): - pass +import sentry_sdk +from sentry_sdk.integrations.threading import ThreadingIntegration - def bind_user(**kwargs): - pass +def capture_exception(*args, **kwargs): + exc_info = sys.exc_info() + if not exc_info[0] is capnp.lib.capnp.KjException: + sentry_sdk.capture_exception(*args, **kwargs) + sentry_sdk.flush() # https://github.com/getsentry/sentry-python/issues/291 + cloudlog.error("crash", exc_info=kwargs.get('exc_info', 1)) - def bind_extra(**kwargs): - pass +def bind_user(**kwargs): + sentry_sdk.set_user(kwargs) -else: - import sentry_sdk - from sentry_sdk.integrations.threading import ThreadingIntegration - - def capture_exception(*args, **kwargs): - exc_info = sys.exc_info() - if not exc_info[0] is capnp.lib.capnp.KjException: - sentry_sdk.capture_exception(*args, **kwargs) - sentry_sdk.flush() # https://github.com/getsentry/sentry-python/issues/291 - cloudlog.error("crash", exc_info=kwargs.get('exc_info', 1)) - - def bind_user(**kwargs): - sentry_sdk.set_user(kwargs) - - def bind_extra(**kwargs): - for k, v in kwargs.items(): - sentry_sdk.set_tag(k, v) +def bind_extra(**kwargs): + for k, v in kwargs.items(): + sentry_sdk.set_tag(k, v) +def init(): sentry_sdk.init("https://a8dc76b5bfb34908a601d67e2aa8bcf9@o33823.ingest.sentry.io/77924", default_integrations=False, integrations=[ThreadingIntegration(propagate_hub=True)], release=version) diff --git a/selfdrive/manager/manager.py b/selfdrive/manager/manager.py index 27101ba72e..accc1a5fb3 100755 --- a/selfdrive/manager/manager.py +++ b/selfdrive/manager/manager.py @@ -12,7 +12,7 @@ from common.basedir import BASEDIR from common.params import Params from common.text_window import TextWindow from selfdrive.boardd.set_time import set_time -from selfdrive.hardware import HARDWARE, TICI +from selfdrive.hardware import HARDWARE, PC, TICI from selfdrive.manager.helpers import unblock_stdout from selfdrive.manager.process import ensure_running from selfdrive.manager.process_config import managed_processes @@ -83,6 +83,9 @@ def manager_init(): cloudlog.bind_global(dongle_id=dongle_id, version=version, dirty=dirty, device=HARDWARE.get_device_type()) + + if not (dongle_id is None or os.getenv("NOLOG") or os.getenv("NOCRASH") or PC): + crash.init() crash.bind_user(id=dongle_id) crash.bind_extra(dirty=dirty, origin=origin, branch=branch, commit=commit, device=HARDWARE.get_device_type())