[L1240] 0 pthread_mutex_t __global_lock = { { 0, 0, 0, 0, 0, { { 0, 0 } } } }; [L1241-L1244] 0 struct s { int datum; struct s *next; } *A; [L1253] 0 pthread_mutex_t A_mutex = { { 0, 0, 0, 0, 0, { { 0, 0 } } } }; [L1254] 0 pthread_mutex_t B_mutex = { { 0, 0, 0, 0, 0, { { 0, 0 } } } }; [L1267] 0 struct s *p; [L1268] 0 A = malloc(sizeof(struct s)) [L1269] EXPR 0 \read(*A) [L1269] CALL 0 init(A,3) [L1246] 0 p -> datum = x [L1247] 0 p -> next = ((void *)0) [L1269] RET 0 init(A,3) [L1270] 0 pthread_t t_ids[10000]; [L1270] 0 int i=0; VAL [A={4:0}, A_mutex={5:0}, B_mutex={6:0}, __global_lock={3:0}, i=0, t_ids={14:0}] [L1270] COND TRUE 0 i<10000 [L1270] FCALL, FORK 0 pthread_create(&t_ids[i], ((void *)0), t_fun, ((void *)0)) VAL [A={4:0}, A_mutex={5:0}, B_mutex={6:0}, __global_lock={3:0}, i=0, t_ids={14:0}] [L1256] 1 struct s *p = malloc(sizeof(struct s)); [L1257] CALL 1 init(p,7) [L1246] 1 p -> datum = x [L1247] 1 p -> next = ((void *)0) [L1257] RET 1 init(p,7) [L1259] CALL 1 insert(p, &A) [L1250] EXPR 1 \read(**list) [L1250] 1 p->next = *list [L1251] 1 *list = p [L1259] RET 1 insert(p, &A) [L1270] 0 i++ VAL [A={4:0}, A_mutex={5:0}, B_mutex={6:0}, __global_lock={3:0}, i=1, t_ids={14:0}] [L1262] COND FALSE 1 !(__VERIFIER_nondet_int()) [L1270] COND TRUE 0 i<10000 [L1270] FCALL, FORK 0 pthread_create(&t_ids[i], ((void *)0), t_fun, ((void *)0)) VAL [A={4:0}, A_mutex={5:0}, B_mutex={6:0}, __global_lock={3:0}, i=1, t_ids={14:0}] [L1262] EXPR 1 p->datum [L1262] CALL 1 __VERIFIER_assert((p->datum) == 0) [L1235] COND TRUE 1 !(cond) VAL [A={4:0}, A_mutex={5:0}, B_mutex={6:0}, \old(cond)=0, __global_lock={3:0}, cond=0] [L1235] 1 reach_error() VAL [A={4:0}, A_mutex={5:0}, B_mutex={6:0}, \old(cond)=0, __global_lock={3:0}, cond=0]