namespace mozilla { namespace _ipdltest { rpc protocol PTestHangs { both: rpc StackFrame(); parent: async Nonce(); child: async Start(); rpc Hang(); __delete__(); state START: send Start goto RACE; state RACE: recv Nonce goto RACE1; call StackFrame goto RACE2; state RACE1: call StackFrame goto FRAME2; state RACE2: recv Nonce goto FRAME2; // So as to test unwinding the RPC stack state FRAME2: answer StackFrame goto FRAME3; state FRAME3: call StackFrame goto FRAME4; state FRAME4: answer StackFrame goto HANG; state HANG: call Hang goto DEATH; state DEATH: send __delete__; }; } // namespace _ipdltest } // namespace mozilla