Issue: Safety violation
Shared Variables Output
Turn Thread Execution
 PC 
ibc$x seats
T0: __init__()
Set ibc$x to 0
Set seats to [ -1, -1, -1, -1, -1 ]
T4: thread(3)
T2: thread(1)
Set ibc$x to 1
T1: thread(0)
Set ibc$x to 2
T4: thread(3)
Set ibc$x to 3
T5: thread(4)
T1: thread(0)
Set seats[0] to 1
T2: thread(1)
Set seats[1] to 0
T3: thread(2)
Set ibc$x to 4
Set seats[2] to 3
10  T4: thread(3)
Set seats[3] to 0
11  T5: thread(4)
Set ibc$x to 5
Set seats[4] to 4
12  T6: finally()

Harmony bytecode

0  Frame __init__()
1  Sequential
2  Push 0
3  Store ibc$x
4  Jump 22
5  Frame book()
6  Load ibc$x
7  Push 4
8  2-ary ==
9  JumpCond False 14
10  Push 1
11  1-ary -
12  StoreVar seat
13  Jump 20
14  Load ibc$x
15  StoreVar seat
16  Load ibc$x
17  Push 1
18  2-ary +
19  Store ibc$x
20  ReturnOp(seat)
21  DelVar seat
22  Push ()
23  Push 1
24  1-ary -
25  2-ary ListAdd
26  Push 4
27  Push 1
28  2-ary +
29  2-ary *
30  Store seats
31  Jump 41
32  Frame thread(tid)
33  Push ?seats
34  LoadVar tid
35  DelVar tid
36  2-ary AddArg
37  Push ()
38  Apply PC(5)
39  Store
40  ReturnOp(result. None)
41  Push 0
42  Push 4
43  2-ary ..
44  Push 0
45  Cut(i)
46  JumpCond False 54
47  Push ?PC(32)
48  LoadVar i
49  DelVar i
50  2-ary AddArg
51  Push {:}
52  Spawn
53  Jump 45
54  DelVar i
55  Jump 89
56  Frame check()
57  Push True
58  StoreVar res
59  Push 0
60  Push 4
61  2-ary ..
62  Push 0
63  Cut(i)
64  JumpCond False 80
65  LoadVar res
66  DelVar res
67  JumpCond False 76
68  Push ?seats
69  LoadVar i
70  DelVar i
71  2-ary AddArg
72  Load
73  Push 4
74  2-ary <
75  Jump 78
76  DelVar i
77  Push False
78  StoreVar res
79  Jump 63
80  DelVar i
81  ReturnOp(res)
82  DelVar res
83  Jump 89
84  Frame finally()
85  Push ()
86  Apply PC(56)
87  Assert
88  ReturnOp(result. None)
89  Finally 84
90  ReturnOp(result. None)
91  DelVar result
Threads
 ID   Status  Stack Trace  Stack Top 
T0 init
T1 init
T2 init
T3 init
T4 init
T5 init
T6 init