In commit 185f2def1921, RPCs first desynced UserRPCState to running, but
then merge commit 6edcf768c20d restricted it to ephemeral threads. I
believe that was a mistake, and really all threads running iRPC need
this state to make sure they don't stall in the middle.
---
proccontrol/src/irpc.C | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/proccontrol/src/irpc.C b/proccontrol/src/irpc.C
index 59730054af14..0ac11eb7e3d8 100644
--- a/proccontrol/src/irpc.C
+++ b/proccontrol/src/irpc.C
@@ -828,13 +828,13 @@ bool int_iRPC::runIRPC()
//Set in running state
thrd->setRunningRPC(shared_from_this());
setState(Running);
-
+ thrd->getUserRPCState().desyncState(int_thread::running);
+
assert(allocation());
assert(!allocSize() || (binarySize() <= allocSize()));
assert(binaryBlob());
if (thrd->isRPCEphemeral()) {
- thrd->getUserRPCState().desyncState(int_thread::running);
// Create it if necessary
thrd->llproc()->instantiateRPCThread();
pthrd_printf("\tInstantiated iRPC thread\n");
--
1.8.5.3
|