source: CIVL/examples/pthread/fib_bench_longest_false.cvl@ 50f834b

1.23 2.0 main test-branch
Last change on this file since 50f834b was f72f577, checked in by John Edenhofner <johneden@…>, 12 years ago

Added support for robust mutex, get/sets for pthread_mutexattr_t fields, pthread_mutex_trylock, and multiple new competition code examples

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@1073 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 1.5 KB
RevLine 
[f72f577]1/*****************************************************************************
2* SOURCE: This is a translation of a Pthread program from
3* the Pthread benchmarks of SV-COMP 2014.
4* https://svn.sosy-lab.org/software/sv-benchmarks/tags/svcomp14/
5* FILE: fib_bench_longest_false.cvl
6* DESCRIPTION:
7* Simple program of threads interacting which causes an error when
8* their total reaches a certain value. The fix simply involves changing the output
9* for which an error will be caused; specifically, here error is caused when i or j
10* >=46368, the fix has i or j > 46368.
11* Command line execution:
12* civl verify -inputNUM=11 fib_bench_longest_false.cvl
13******************************************************************************/
14#include "pthread.cvh"
15#include <civlc.h>
16
17int i=1, j=1;
18
19$input int NUM;
20
21void *t1(void* arg)
22{
23 int k = 0;
24
25 for (k = 0; k < NUM; k++)
26 {
27 printf("%d",k);
28 i+=j;
29 }
30 pthread_exit(NULL, false, NULL, 0); //Different parameters
31}
32
33void *t2(void* arg)
34{
35 int k = 0;
36
37 for (k = 0; k < NUM; k++)
38 {
39 printf("%d",k);
40 j+=i;
41 }
42
43 pthread_exit(NULL, false, NULL, 0); //Different parameters
44}
45
46int main(int argc, char **argv)
47{
48 pthread_t id1, id2;
49
50 pthread_create(&id1, NULL, t1, NULL);
51 pthread_create(&id2, NULL, t2, NULL);
52
53 pthread_join(id1, NULL); //Added pthread_join, probably error in competition code
54 pthread_join(id2, NULL);
55
56 if (i >= 46368 || j >= 46368) {
57 $assert($false);
58 }
59 return 0;
60}
Note: See TracBrowser for help on using the repository browser.