From 0509a52d6e1ddaac7ffc0c16fdaf1b279fca8545 Mon Sep 17 00:00:00 2001 From: George Tsiamasiotis Date: Mon, 30 Sep 2024 15:05:03 +0300 Subject: [PATCH] Set multiprocessing start method early --- frigate/__main__.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/frigate/__main__.py b/frigate/__main__.py index b4f46028a..1f899bed2 100644 --- a/frigate/__main__.py +++ b/frigate/__main__.py @@ -12,9 +12,15 @@ from frigate.log import setup_logging def main() -> None: + # Show more information on python interpreter crash faulthandler.enable() - # Setup the logging thread + # Switch multiprocessing start method to forkserver (the default as of python 3.14). + # This must happen before anything else, or it's likely to segfault (ask me how I know). + mp.set_start_method("forkserver", force=True) + mp.set_forkserver_preload(["frigate"]) + + # Start and configure the logging thread setup_logging() threading.current_thread().name = "frigate" @@ -22,10 +28,6 @@ def main() -> None: # Make sure we exit cleanly on SIGTERM. signal.signal(signal.SIGTERM, lambda sig, frame: sys.exit()) - # Switch multiprocessing start method to forkserver (the default as of python 3.14). - mp.set_start_method("forkserver", force=True) - mp.set_forkserver_preload(["frigate"]) - # Parse the cli arguments. parser = argparse.ArgumentParser( prog="Frigate",