[L3888] 0 pthread_t t1,t2; [L3962] CALL, EXPR 0 my_drv_init() [L3956] 0 return 0; [L3962] RET, EXPR 0 my_drv_init() [L3962] 0 int ret = my_drv_init(); [L3963] COND TRUE 0 ret==0 [L3964] 0 int probe_ret; [L3965] 0 struct my_data data; [L3966] CALL, EXPR 0 my_drv_probe(&data) [L3919] 0 struct device *d = &data->dev; [L3923] 0 data->shared.a = 0 [L3924] 0 data->shared.b = 0 [L3925] 0 int res = __VERIFIER_nondet_int(); [L3926] COND FALSE 0 !(\read(res)) [L3929] FCALL, FORK 0 pthread_create(&t1, ((void *)0), my_callback, (void *)d) VAL [\old(arg)={6:24}, \old(data)={6:0}, d={6:24}, data={6:0}, res=0, t1=-2, t2=0] [L3902] 1 struct device *dev = (struct device*)arg; [L3903] 1 struct my_data *data; [L3904] 1 const typeof( ((struct my_data *)0)->dev ) *__mptr = (dev); [L3904] 1 { const typeof( ((struct my_data *)0)->dev ) *__mptr = (dev); (struct my_data *)( (char *)__mptr - __builtin_offsetof (struct my_data, dev) );} [L3904] 1 data = ({ const typeof( ((struct my_data *)0)->dev ) *__mptr = (dev); (struct my_data *)( (char *)__mptr - __builtin_offsetof (struct my_data, dev) );}) [L3907] 1 data->shared.a = 1 VAL [\old(arg)={6:24}, arg={6:24}, data={6:0}, dev={6:24}, t1=-2, t2=0] [L3910] EXPR 1 data->shared.b [L3910] 1 int lb = data->shared.b; [L3913] 1 data->shared.b = lb + 1 VAL [\old(arg)={6:24}, arg={6:24}, data={6:0}, dev={6:24}, lb=0, t1=-2, t2=0] [L3916] 1 return 0; [L3930] FCALL, FORK 0 pthread_create(&t2, ((void *)0), my_callback, (void *)d) VAL [\old(arg)={6:24}, \old(data)={6:0}, \result={0:0}, arg={6:24}, d={6:24}, data={6:0}, data={6:0}, dev={6:24}, lb=0, res=0, t1=-2, t2=-1] [L3902] 2 struct device *dev = (struct device*)arg; [L3903] 2 struct my_data *data; [L3904] 2 const typeof( ((struct my_data *)0)->dev ) *__mptr = (dev); [L3904] 2 { const typeof( ((struct my_data *)0)->dev ) *__mptr = (dev); (struct my_data *)( (char *)__mptr - __builtin_offsetof (struct my_data, dev) );} [L3904] 2 data = ({ const typeof( ((struct my_data *)0)->dev ) *__mptr = (dev); (struct my_data *)( (char *)__mptr - __builtin_offsetof (struct my_data, dev) );}) [L3907] 2 data->shared.a = 1 VAL [\old(arg)={6:24}, \result={0:0}, arg={6:24}, data={6:0}, dev={6:24}, lb=0, t1=-2, t2=-1] [L3910] EXPR 2 data->shared.b [L3910] 2 int lb = data->shared.b; [L3913] 2 data->shared.b = lb + 1 VAL [\old(arg)={6:24}, \result={0:0}, arg={6:24}, data={6:0}, dev={6:24}, lb=0, t1=-2, t2=-1] [L3916] 2 return 0; [L3933] 0 data->shared.a = 3 VAL [\old(arg)={6:24}, \old(data)={6:0}, \result={0:0}, arg={6:24}, d={6:24}, data={6:0}, data={6:0}, dev={6:24}, lb=0, res=0, t1=-2, t2=-1] [L3936] 0 data->shared.b = 3 VAL [\old(arg)={6:24}, \old(data)={6:0}, \result={0:0}, arg={6:24}, d={6:24}, data={6:0}, data={6:0}, dev={6:24}, lb=0, res=0, t1=-2, t2=-1] [L3939] EXPR 0 data->shared.a [L3939] CALL 0 ldv_assert(data->shared.a==3) [L3887] COND FALSE 0 !(!expression) [L3939] RET 0 ldv_assert(data->shared.a==3) [L3942] EXPR 0 data->shared.b [L3942] CALL 0 ldv_assert(data->shared.b==3) [L3887] COND FALSE 0 !(!expression) [L3942] RET 0 ldv_assert(data->shared.b==3) [L3944] 0 return 0; VAL [\old(arg)={6:24}, \old(data)={6:0}, \result=0, \result={0:0}, arg={6:24}, d={6:24}, data={6:0}, data={6:0}, dev={6:24}, lb=0, res=0, t1=-2, t2=-1] [L3966] RET, EXPR 0 my_drv_probe(&data) [L3966] 0 probe_ret = my_drv_probe(&data) [L3967] COND TRUE 0 probe_ret==0 [L3968] CALL 0 my_drv_disconnect(&data) [L3950] 0 void *status; VAL [\old(arg)={6:24}, \old(data)={6:0}, \result={0:0}, arg={6:24}, data={6:0}, data={6:0}, dev={6:24}, lb=0, status={5:0}, t1=-2, t2=-1] [L3951] FCALL, JOIN 1 pthread_join(t1, &status) VAL [\old(arg)={6:24}, \old(data)={6:0}, \result={0:0}, arg={6:24}, data={6:0}, data={6:0}, dev={6:24}, lb=0, status={5:0}, t1=-2, t2=-1] [L3952] FCALL, JOIN 2 pthread_join(t2, &status) VAL [\old(arg)={6:24}, \old(data)={6:0}, \result={0:0}, arg={6:24}, data={6:0}, data={6:0}, dev={6:24}, lb=0, status={5:0}, t1=-2, t2=-1] [L3968] RET 0 my_drv_disconnect(&data) [L3969] EXPR 0 data.shared.a [L3969] CALL 0 ldv_assert(data.shared.a==1) [L3887] COND TRUE 0 !expression VAL [\old(arg)={6:24}, \old(expression)=0, \result={0:0}, arg={6:24}, data={6:0}, dev={6:24}, expression=0, lb=0, t1=-2, t2=-1] [L3887] 0 reach_error() VAL [\old(arg)={6:24}, \old(expression)=0, \result={0:0}, arg={6:24}, data={6:0}, dev={6:24}, expression=0, lb=0, t1=-2, t2=-1]