From ce308ddc6bfc5188aff0746314853397f9c62e5a Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 29 Sep 2021 11:16:54 -0400 Subject: [PATCH] launch_daemon: Trigger sticky-already-triggered external events immediately. If the external event is sticky and already triggered, then we want to trigger any newly-added events immediately. This fixes "boot hangs on rocket" regressions following 4f126f690c17de00f44135f46acf0664ede61ab1, which seems to have exacerbated this already-existing race condition. Fixes #17289. Change-Id: Ie405826cc50255895c8831c34b8bdf902e584eb5 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4510 Reviewed-by: waddlesplash --- src/servers/launch/LaunchDaemon.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/servers/launch/LaunchDaemon.cpp b/src/servers/launch/LaunchDaemon.cpp index cc357d0404..0c7dd8c428 100644 --- a/src/servers/launch/LaunchDaemon.cpp +++ b/src/servers/launch/LaunchDaemon.cpp @@ -317,6 +317,9 @@ ExternalEventSource::ResetSticky() status_t ExternalEventSource::AddDestination(Event* event) { + if (fStickyTriggered) + Events::TriggerExternalEvent(event); + if (fDestinations.AddItem(event)) return B_OK;