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