diff options
Diffstat (limited to 'ipc/ipdl/test/cxx/PTestHangs.ipdl')
-rw-r--r-- | ipc/ipdl/test/cxx/PTestHangs.ipdl | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/ipc/ipdl/test/cxx/PTestHangs.ipdl b/ipc/ipdl/test/cxx/PTestHangs.ipdl new file mode 100644 index 000000000..b1b43fa75 --- /dev/null +++ b/ipc/ipdl/test/cxx/PTestHangs.ipdl @@ -0,0 +1,40 @@ + +namespace mozilla { +namespace _ipdltest { + +intr protocol PTestHangs { +both: + intr StackFrame(); + +parent: + async Nonce(); + +child: + async Start(); + intr Hang(); + async __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 |