From b5fa20a2b8ee9c01643c7cd61ec35d3972d4a95d Mon Sep 17 00:00:00 2001 From: Hayodea Hekol Date: Mon, 25 May 2026 08:50:25 -0400 Subject: [PATCH] Mrntt:lifetime: if no devs attach, fail initializeCReq --- smocore/include/marionette/marionette.h | 2 ++ smocore/marionette/lifetime.cpp | 3 +++ smocore/marionette/main.cpp | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/smocore/include/marionette/marionette.h b/smocore/include/marionette/marionette.h index 5d98292..b10fef7 100644 --- a/smocore/include/marionette/marionette.h +++ b/smocore/include/marionette/marionette.h @@ -64,6 +64,8 @@ private: public: std::exception_ptr initializeLifetimeExceptionPtr; std::exception_ptr finalizeLifetimeExceptionPtr; + /** Set true only when initializeCReq completes without failure. */ + bool initializeLifetimeSucceeded = false; }; extern std::shared_ptr thread; diff --git a/smocore/marionette/lifetime.cpp b/smocore/marionette/lifetime.cpp index 2198d4a..4750c11 100644 --- a/smocore/marionette/lifetime.cpp +++ b/smocore/marionette/lifetime.cpp @@ -31,6 +31,8 @@ void assertMarionetteThread() void MarionetteComponent::holdInitializeCReq( std::function completion) { + initializeLifetimeSucceeded = false; + initializeLifetimeExceptionPtr = nullptr; initializeCReqInvoker.emplace(initializeCReq( initializeLifetimeExceptionPtr, std::move(completion))); } @@ -58,6 +60,7 @@ MrnttNonViralPostingInvoker MarionetteComponent::initializeCReq( co_return; } + initializeLifetimeSucceeded = true; smo::device::DeviceManager::getInstance().initializeDeviceReattacher(); // Call negtrinEventInd on the Director in the final callback diff --git a/smocore/marionette/main.cpp b/smocore/marionette/main.cpp index 0a00136..fdecc18 100644 --- a/smocore/marionette/main.cpp +++ b/smocore/marionette/main.cpp @@ -133,7 +133,8 @@ void MarionetteComponent::preLoopHook() [] { marionetteInitializeReqCb( - !mrntt.initializeLifetimeExceptionPtr); + mrntt.initializeLifetimeSucceeded + && !mrntt.initializeLifetimeExceptionPtr); }); std::cout << "PuppeteerThread::main: Entering event loop" << "\n";