analyzer
analyzer copied to clipboard
Fix 28-race_reach TODOs
Races-as-reachability tests in 28-race_reach have TODO assertions which we currently cannot prove:
-
[ ] 22-deref_read_racefree.c
Global
q
may still point to initialNULL
in addition to&data
inmain
(not privatized). This is probably why Goblint cannot prove the assertion despite havingdata = 0
in global invariant. -
[ ] 70-funloop_racefree.c, 73-funloop_hard_racefree.c
cache[?].refs
not privatized inaccess
with symbolic lock forcache[?].refs_mutex
(p-lock:*.refs_mutex
). -
[ ] 74-tricky_address1_racefree.c, 75-tricky_address2_racefree.c, 76-tricky_address3_racefree.c
a[?].datum
not privatized inaccess
with symbolic lock fora[?].mutex
(p-lock:*.mutex
). -
[ ] 79-equ_racefree.c
A.datum
not privatized inaccess
with symbolic lock forA.mutex
(p-lock:*.mutex
). -
[ ] 85-list2_racefree.c
The non-determinism in
t1_fun
causes regionsA
andB
to collapse ininsert
becauseRegMap
has{A, B}
forlist
,t
andnode
. Making region analysis path-sensitive at least prevents the regions from collapsing. -
[ ] 87-lists_racefree.c
Considering the locking scheme, this needs
--set ana.activated[+] "'var_eq'" --set ana.activated[+] "'symb_locks'" --set ana.activated[+] "'region'" --enable exp.region-offsets
inPARAM
as well? Thenbuckets[?].datum
not privatized inaccess
with symbolic lock formutexes[?]
(i-lock:mutexes[def_exc:*]
). -
[ ] 91-arrayloop2_racefree.c, 93-evilcollapse_racefree.c
?.datum
not privatized inaccess
with symbolic lock forc.slots_mutex[?]
(i-lock:c.slots_mutex[def_exc:*]
). Offsetsc.slot[?].datum
(memory location) andc.slot[?].next.datum
(region) aren't even valid becausedatum
cannot be reached fromc
through normal field accesses. This might make its privatization harder?