<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head><body bgcolor="#FFFFFF" text="#000000" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<p class="">Hello,</p>
<p class="">I've been trying to track down a false positive with symbolic
execution of an array assignment within a loop, but I'm having some trouble
figuring out the root cause. In the attached loop.c file, the
analyzer identifies the LHS of the assignment equal operation on
line 11 to be a garbage value, but this is actually initialized on
line 6.<br class="">
</p>
<p class="">Initially, I thought that this was an issue with dead symbols
being incorrectly purged, because the trimmed ExplodedGraph shows
that the analyzer identifies the array "c" to be an ElementRegion
"c: &element{c, 0 S64b,int}" in an earlier node before
PreStmtPurgeDeadSymbols. But this is unchanged even after
eliminating calls to collectNode(), so I'm confused if the graph
is representing the actual symbolic execution exploration state,
or just simply the ordering of explored states from the worklist?<br class="">
</p>
<p class="">The other place that I've been looking at is the branch condition
handling inside ExprEngine::processBranch(). When the symbolic
execution engine assumes either of the false/true branches, does
that also entail the body of the loop?<br class="">
</p>
<p class="">Thanks,</p>
<p class="">Dominic<br class="">
</p>
</body></html>