User: | Jiri Slaby |
Error type: | Reachable Error Location |
Error type description: | A specified error location is reachable in some program path |
File location: | loops/kundu_unsafe.i |
Line in file: | 8 |
Project: | SV-COMP 2013 |
Project version: | 2.6.28 |
Tools: |
Manual Work
|
Entered: | 2013-01-17 16:57:54 UTC |
1extern int __VERIFIER_nondet_int(); 2 3void error(void) 4{ 5 6 { 7 goto ERROR; 8 ERROR: ; 9 return; 10} 11} 12 13void immediate_notify(void) ; 14int max_loop ; 15int num ; 16int i ; 17int e ; 18int timer ; 19char data_0 ; 20char data_1 ; 21char read_data(int i___0 ) 22{ char c ; 23 char __retres3 ; 24 25 { 26 if (i___0 == 0) { 27 __retres3 = data_0; 28 goto return_label; 29 } else { 30 if (i___0 == 1) { 31 __retres3 = data_1; 32 goto return_label; 33 } else { 34 { 35 error(); 36 } 37 } 38 } 39 __retres3 = c; 40 return_label: 41 return (__retres3); 42} 43} 44void write_data(int i___0 , char c ) 45{ 46 47 { 48 if (i___0 == 0) { 49 data_0 = c; 50 } else { 51 if (i___0 == 1) { 52 data_1 = c; 53 } else { 54 { 55 error(); 56 } 57 } 58 } 59 60 return; 61} 62} 63int P_1_pc; 64int P_1_st ; 65int P_1_i ; 66int P_1_ev ; 67void P_1(void) 68{ 69 70 { 71 if ((int )P_1_pc == 0) { 72 goto P_1_ENTRY_LOC; 73 } else { 74 if ((int )P_1_pc == 1) { 75 goto P_1_WAIT_LOC; 76 } else { 77 78 } 79 } 80 P_1_ENTRY_LOC: 81 { 82 while (i < max_loop) { 83 while_0_continue: ; 84 { 85 write_data(num, 'A'); 86 num += 1; 87 P_1_pc = 1; 88 P_1_st = 2; 89 } 90 91 goto return_label; 92 P_1_WAIT_LOC: ; 93 } 94 while_0_break: ; 95 } 96 P_1_st = 2; 97 98 return_label: 99 return; 100} 101} 102int is_P_1_triggered(void) 103{ int __retres1 ; 104 105 { 106 if ((int )P_1_pc == 1) { 107 if ((int )P_1_ev == 1) { 108 __retres1 = 1; 109 goto return_label; 110 } else { 111 112 } 113 } else { 114 115 } 116 __retres1 = 0; 117 return_label: 118 return (__retres1); 119} 120} 121int C_1_pc ; 122int C_1_st ; 123int C_1_i ; 124int C_1_ev ; 125int C_1_pr ; 126void C_1(void) 127{ char c ; 128 129 { 130 if ((int )C_1_pc == 0) { 131 goto C_1_ENTRY_LOC; 132 } else { 133 if ((int )C_1_pc == 1) { 134 goto C_1_WAIT_1_LOC; 135 } else { 136 if ((int )C_1_pc == 2) { 137 goto C_1_WAIT_2_LOC; 138 } else { 139 140 } 141 } 142 } 143 C_1_ENTRY_LOC: 144 { 145 while (i < max_loop) { 146 while_2_continue: ; 147 if (num == 0) { 148 timer = 1; 149 i += 1; 150 C_1_pc = 1; 151 C_1_st = 2; 152 153 goto return_label; 154 C_1_WAIT_1_LOC: ; 155 } else { 156 157 } 158 num -= 1; 159 if (! (num >= 0)) { 160 { 161 error(); 162 } 163 } else { 164 165 } 166 { 167 c = read_data(num); 168 i += 1; 169 C_1_pc = 2; 170 C_1_st = 2; 171 } 172 173 goto return_label; 174 C_1_WAIT_2_LOC: ; 175 } 176 while_2_break: ; 177 } 178 C_1_st = 2; 179 180 return_label: 181 return; 182} 183} 184int is_C_1_triggered(void) 185{ int __retres1 ; 186 187 { 188 if ((int )C_1_pc == 1) { 189 if ((int )e == 1) { 190 __retres1 = 1; 191 goto return_label; 192 } else { 193 194 } 195 } else { 196 197 } 198 if ((int )C_1_pc == 2) { 199 if ((int )C_1_ev == 1) { 200 __retres1 = 1; 201 goto return_label; 202 } else { 203 204 } 205 } else { 206 207 } 208 __retres1 = 0; 209 return_label: 210 return (__retres1); 211} 212} 213void update_channels(void) 214{ 215 216 { 217 218 return; 219} 220} 221void init_threads(void) 222{ 223 224 { 225 if ((int )P_1_i == 1) { 226 P_1_st = 0; 227 } else { 228 P_1_st = 2; 229 } 230 if ((int )C_1_i == 1) { 231 C_1_st = 0; 232 } else { 233 C_1_st = 2; 234 } 235 236 return; 237} 238} 239int exists_runnable_thread(void) 240{ int __retres1 ; 241 242 { 243 if ((int )P_1_st == 0) { 244 __retres1 = 1; 245 goto return_label; 246 } else { 247 if ((int )C_1_st == 0) { 248 __retres1 = 1; 249 goto return_label; 250 } else { 251 252 } 253 } 254 } 255 __retres1 = 0; 256 return_label: 257 return (__retres1); 258} 259 260void eval(void) 261{ int tmp ; 262 int tmp___0 ; 263 int tmp___1 ; 264 int tmp___2 ; 265 266 267 { 268 { 269 while (1) { 270 while_3_continue: ; 271 { 272 tmp___2 = exists_runnable_thread(); 273 } 274 if (tmp___2) { 275 276 } else { 277 goto while_3_break; 278 } 279 if ((int )P_1_st == 0) { 280 { 281 tmp = __VERIFIER_nondet_int(); 282 } 283 if (tmp) { 284 { 285 P_1_st = 1; 286 P_1(); 287 } 288 } else { 289 290 } 291 } else { 292 293 } 294 if ((int )C_1_st == 0) { 295 { 296 tmp___1 = __VERIFIER_nondet_int(); 297 } 298 if (tmp___1) { 299 { 300 C_1_st = 1; 301 C_1(); 302 } 303 } else { 304 305 } 306 } else { 307 308 } 309 } 310 while_3_break: ; 311 } 312 313 return; 314} 315} 316void fire_delta_events(void) 317{ 318 319 { 320 321 return; 322} 323} 324void reset_delta_events(void) 325{ 326 327 { 328 329 return; 330} 331} 332void fire_time_events(void) 333{ 334 335 { 336 C_1_ev = 1; 337 338 P_1_ev = 1; 339 340 341 342 343 return; 344} 345} 346void reset_time_events(void) 347{ 348 349 { 350 if ((int )P_1_ev == 1) { 351 P_1_ev = 2; 352 } else { 353 354 } 355 if ((int )C_1_ev == 1) { 356 C_1_ev = 2; 357 } else { 358 359 } 360 361 return; 362} 363} 364void activate_threads(void) 365{ int tmp ; 366 int tmp___0 ; 367 int tmp___1 ; 368 369 { 370 { 371 tmp = is_P_1_triggered(); 372 } 373 if (tmp) { 374 P_1_st = 0; 375 } else { 376 377 } 378 { 379 tmp___1 = is_C_1_triggered(); 380 } 381 if (tmp___1) { 382 C_1_st = 0; 383 } else { 384 385 } 386 387 return; 388} 389} 390void immediate_notify(void) 391{ 392 393 { 394 { 395 activate_threads(); 396 } 397 398 return; 399} 400} 401int stop_simulation(void) 402{ int tmp ; 403 int __retres2 ; 404 405 { 406 { 407 tmp = exists_runnable_thread(); 408 } 409 if (tmp) { 410 __retres2 = 0; 411 goto return_label; 412 } else { 413 414 } 415 __retres2 = 1; 416 return_label: 417 return (__retres2); 418} 419} 420void start_simulation(void) 421{ int kernel_st ; 422 int tmp ; 423 int tmp___0 ; 424 425 { 426 { 427 kernel_st = 0; 428 update_channels(); 429 init_threads(); 430 fire_delta_events(); 431 activate_threads(); 432 reset_delta_events(); 433 } 434 { 435 while (1) { 436 while_4_continue: ; 437 { 438 kernel_st = 1; 439 eval(); 440 } 441 { 442 kernel_st = 2; 443 update_channels(); 444 } 445 { 446 kernel_st = 3; 447 fire_delta_events(); 448 activate_threads(); 449 reset_delta_events(); 450 } 451 { 452 tmp = exists_runnable_thread(); 453 } 454 if (tmp == 0) { 455 { 456 kernel_st = 4; 457 fire_time_events(); 458 activate_threads(); 459 reset_time_events(); 460 } 461 } else { 462 463 } 464 { 465 tmp___0 = stop_simulation(); 466 } 467 if (tmp___0) { 468 goto while_4_break; 469 } else { 470 471 } 472 } 473 while_4_break: ; 474 } 475 476 return; 477} 478} 479void init_model(void) 480{ 481 482 { 483 P_1_i = 1; 484 C_1_i = 1; 485 486 return; 487} 488} 489int main(void) 490{ int count ; 491 int __retres2 ; 492 493 { 494 { 495 num = 0; 496 i = 0; 497 max_loop = 2; 498 e ; 499 timer = 0; 500 P_1_pc = 0; 501 C_1_pc = 0; 502 503 count = 0; 504 init_model(); 505 start_simulation(); 506 } 507 __retres2 = 0; 508 return (__retres2); 509} 510}