[L682] 0 static char buffer[10]; [L683] 0 static unsigned int first; [L684] 0 static unsigned int next; [L685] 0 static int buffer_size; [L686] 0 _Bool send, receive; [L687] 0 pthread_mutex_t m; [L756] 0 pthread_t id1, id2; [L758] CALL 0 initLog(10) [L690] 0 buffer_size = max [L691] EXPR 0 next = 0 [L691] 0 first = next = 0 [L758] RET 0 initLog(10) [L759] 0 send=1 [L760] 0 receive=0 [L761] FCALL, FORK 0 pthread_create(&id1, ((void *)0), t1, ((void *)0)) VAL [buffer={3:0}, buffer_size=10, first=0, id1=-1, m={4:0}, next=0, receive=0, send=1] [L723] 1 int i; [L724] 1 i=0 VAL [\old(arg)={0:0}, arg={0:0}, buffer={3:0}, buffer_size=10, first=0, i=0, m={4:0}, next=0, receive=0, send=1] [L762] FCALL, FORK 0 pthread_create(&id2, ((void *)0), t2, ((void *)0)) VAL [buffer={3:0}, buffer_size=10, first=0, id1=-1, id2=0, m={4:0}, next=0, receive=0, send=1] [L739] 2 int i; [L740] 2 i=0 VAL [\old(arg)={0:0}, arg={0:0}, buffer={3:0}, buffer_size=10, first=0, i=0, m={4:0}, next=0, receive=0, send=1] [L724] COND TRUE 1 i<7 VAL [\old(arg)={0:0}, arg={0:0}, buffer={3:0}, buffer_size=10, first=0, i=0, m={4:0}, next=0, receive=0, send=1] [L727] COND TRUE 1 \read(send) [L729] CALL 1 insertLogElement(i) [L707] COND TRUE 1 next < buffer_size && buffer_size > 0 [L709] 1 buffer[next] = b [L710] 1 next = (next+1)%buffer_size VAL [\old(b)=0, b=0, buffer={3:0}, buffer_size=10, first=0, m={4:0}, next=1, receive=0, send=1] [L712] COND TRUE 1 next 0 && first < buffer_size [L697] 2 first++ [L698] EXPR 2 buffer[first-1] [L698] 2 return buffer[first-1]; [L745] RET, EXPR 2 removeLogElement() [L745] COND TRUE 2 removeLogElement()==i [L747] 2 receive=0 [L748] 2 send=1 VAL [\old(arg)={0:0}, arg={0:0}, buffer={3:0}, buffer_size=10, first=1, i=0, m={4:0}, next=1, receive=0, send=1] [L740] 2 i++ VAL [\old(arg)={0:0}, arg={0:0}, buffer={3:0}, buffer_size=10, first=1, i=1, m={4:0}, next=1, receive=0, send=1] [L724] COND TRUE 1 i<7 VAL [\old(arg)={0:0}, arg={0:0}, buffer={3:0}, buffer_size=10, first=1, i=1, m={4:0}, next=1, receive=0, send=1] [L740] COND TRUE 2 i<7 VAL [\old(arg)={0:0}, arg={0:0}, buffer={3:0}, buffer_size=10, first=1, i=1, m={4:0}, next=1, receive=0, send=1] [L743] COND FALSE 2 !(\read(receive)) VAL [\old(arg)={0:0}, arg={0:0}, buffer={3:0}, buffer_size=10, first=1, i=1, m={4:0}, next=1, receive=0, send=1] [L727] COND TRUE 1 \read(send) [L729] CALL 1 insertLogElement(i) [L707] COND TRUE 1 next < buffer_size && buffer_size > 0 [L709] 1 buffer[next] = b [L710] 1 next = (next+1)%buffer_size VAL [\old(b)=1, b=1, buffer={3:0}, buffer_size=10, first=1, m={4:0}, next=2, receive=0, send=1] [L712] COND TRUE 1 next 0 && first < buffer_size [L697] 2 first++ [L698] EXPR 2 buffer[first-1] [L698] 2 return buffer[first-1]; [L745] RET, EXPR 2 removeLogElement() [L745] COND FALSE 2 !(removeLogElement()==i) [L746] 2 reach_error() VAL [\old(arg)={0:0}, arg={0:0}, buffer={3:0}, buffer_size=10, first=2, i=2, m={4:0}, next=2, receive=1, send=0]