Bug
ActiveContext::Start() registers recovery interfaces for cl_signer and is_signer but not shareman:
// src/active/context.cpp — current code
cl_signer->RegisterRecoveryInterface();
is_signer->RegisterRecoveryInterface();
// shareman->RegisterRecoveryInterface(); ← MISSING
Without this, completed sig share sessions are only cleaned up via the 5-second Cleanup() interval instead of promptly via HandleNewRecoveredSig. The corresponding UnregisterRecoveryInterface() call in Stop() is also missing.
Impact
- Delayed cleanup of completed sig share sessions (up to 5s instead of immediate)
- Under CI load with frozen mocktime, this manifests as flaky test failures in
feature_llmq_signing.py and interface_zmq_dash.py where InstantSend locks don't arrive within expected timeouts
Root Cause
The registration was likely dropped during the sig share refactoring that split share management into a separate shareman object. The cl_signer and is_signer registrations survived but shareman was missed.
Fix
// In ActiveContext::Start():
cl_signer->RegisterRecoveryInterface();
is_signer->RegisterRecoveryInterface();
+shareman->RegisterRecoveryInterface();
// In ActiveContext::Stop():
+shareman->UnregisterRecoveryInterface();
is_signer->UnregisterRecoveryInterface();
cl_signer->UnregisterRecoveryInterface();
Discovery
Found during CI triage of dash#7242 (wallet deprecation backport). The fix was originally committed as a80c46c438 on the backport branch but has been stripped out since it's unrelated to that PR's scope.
See also: dash#7233 (flaky LLMQ signing test fixes — related symptoms, different root cause).
Bug
ActiveContext::Start()registers recovery interfaces forcl_signerandis_signerbut notshareman:Without this, completed sig share sessions are only cleaned up via the 5-second
Cleanup()interval instead of promptly viaHandleNewRecoveredSig. The correspondingUnregisterRecoveryInterface()call inStop()is also missing.Impact
feature_llmq_signing.pyandinterface_zmq_dash.pywhere InstantSend locks don't arrive within expected timeoutsRoot Cause
The registration was likely dropped during the sig share refactoring that split share management into a separate
sharemanobject. Thecl_signerandis_signerregistrations survived butsharemanwas missed.Fix
Discovery
Found during CI triage of dash#7242 (wallet deprecation backport). The fix was originally committed as
a80c46c438on the backport branch but has been stripped out since it's unrelated to that PR's scope.See also: dash#7233 (flaky LLMQ signing test fixes — related symptoms, different root cause).