Showing error 13

User: Jiri Slaby
Error type: Reachable Error Location
Error type description: A specified error location is reachable in some program path
File location: locks/test_locks_11.c
Line in file: 178
Project: SV-COMP 2012
Tools: Manual Work
Entered: 2012-11-19 13:47:39 UTC


Source:

  1int get_exit_nondet()
  2{
  3    int retval;
  4    return (retval);
  5}
  6
  7int main()
  8{
  9    int p1;  // condition variable
 10    int lk1; // lock variable
 11
 12    int p2;  // condition variable
 13    int lk2; // lock variable
 14
 15    int p3;  // condition variable
 16    int lk3; // lock variable
 17
 18    int p4;  // condition variable
 19    int lk4; // lock variable
 20
 21    int p5;  // condition variable
 22    int lk5; // lock variable
 23
 24    int p6;  // condition variable
 25    int lk6; // lock variable
 26
 27    int p7;  // condition variable
 28    int lk7; // lock variable
 29
 30    int p8;  // condition variable
 31    int lk8; // lock variable
 32
 33    int p9;  // condition variable
 34    int lk9; // lock variable
 35
 36    int p10;  // condition variable
 37    int lk10; // lock variable
 38
 39    int p11;  // condition variable
 40    int lk11; // lock variable
 41
 42
 43    int cond;
 44
 45    while(1) {
 46        cond = get_exit_nondet();
 47        if (cond == 0) {
 48            goto out;
 49        } else {}
 50        lk1 = 0; // initially lock is open
 51
 52        lk2 = 0; // initially lock is open
 53
 54        lk3 = 0; // initially lock is open
 55
 56        lk4 = 0; // initially lock is open
 57
 58        lk5 = 0; // initially lock is open
 59
 60        lk6 = 0; // initially lock is open
 61
 62        lk7 = 0; // initially lock is open
 63
 64        lk8 = 0; // initially lock is open
 65
 66        lk9 = 0; // initially lock is open
 67
 68        lk10 = 0; // initially lock is open
 69
 70        lk11 = 0; // initially lock is open
 71
 72
 73    // lock phase
 74        if (p1 != 0) {
 75            lk1 = 1; // acquire lock
 76        } else {}
 77
 78        if (p2 != 0) {
 79            lk2 = 1; // acquire lock
 80        } else {}
 81
 82        if (p3 != 0) {
 83            lk3 = 1; // acquire lock
 84        } else {}
 85
 86        if (p4 != 0) {
 87            lk4 = 1; // acquire lock
 88        } else {}
 89
 90        if (p5 != 0) {
 91            lk5 = 1; // acquire lock
 92        } else {}
 93
 94        if (p6 != 0) {
 95            lk6 = 1; // acquire lock
 96        } else {}
 97
 98        if (p7 != 0) {
 99            lk7 = 1; // acquire lock
100        } else {}
101
102        if (p8 != 0) {
103            lk8 = 1; // acquire lock
104        } else {}
105
106        if (p9 != 0) {
107            lk9 = 1; // acquire lock
108        } else {}
109
110        if (p10 != 0) {
111            lk10 = 1; // acquire lock
112        } else {}
113
114        if (p11 != 0) {
115            lk11 = 1; // acquire lock
116        } else {}
117
118
119    // unlock phase
120        if (p1 != 0) {
121            if (lk1 != 1) goto ERROR; // assertion failure
122            lk1 = 0;
123        } else {}
124
125        if (p2 != 0) {
126            if (lk2 != 1) goto ERROR; // assertion failure
127            lk2 = 0;
128        } else {}
129
130        if (p3 != 0) {
131            if (lk3 != 1) goto ERROR; // assertion failure
132            lk3 = 0;
133        } else {}
134
135        if (p4 != 0) {
136            if (lk4 != 1) goto ERROR; // assertion failure
137            lk4 = 0;
138        } else {}
139
140        if (p5 != 0) {
141            if (lk5 != 1) goto ERROR; // assertion failure
142            lk5 = 0;
143        } else {}
144
145        if (p6 != 0) {
146            if (lk6 != 1) goto ERROR; // assertion failure
147            lk6 = 0;
148        } else {}
149
150        if (p7 != 0) {
151            if (lk7 != 1) goto ERROR; // assertion failure
152            lk7 = 0;
153        } else {}
154
155        if (p8 != 0) {
156            if (lk8 != 1) goto ERROR; // assertion failure
157            lk8 = 0;
158        } else {}
159
160        if (p9 != 0) {
161            if (lk9 != 1) goto ERROR; // assertion failure
162            lk9 = 0;
163        } else {}
164
165        if (p10 != 0) {
166            if (lk10 != 1) goto ERROR; // assertion failure
167            lk10 = 0;
168        } else {}
169
170        if (p11 != 0) {
171            if (lk11 != 1) goto ERROR; // assertion failure
172            lk11 = 0;
173        } else {}
174
175    }
176  out:
177    return 0;
178  ERROR:
179    return 0;  
180}
181