You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Path exploration pushes both successors onto queue
When doing path exploration and encountering a conditional goto
instruction, both successors of the goto (the next instruction, and the
target) are pushed onto the path exploration workqueue. This allows the
symbolic execution caller to have complete control over which path to
execute next.
Prior to this commit, symex would push one successor onto the workqueue
and continue executing the path of the other successor until the path
was terminated. This commit introduces the possibility that symbolic
execution pauses without reaching the end of a path, and needs to be
resumed by the caller. Thus, new safety checker results are introduced
(SUSPENDED and UNKNOWN); the former signals to the caller of symex that
symex has not reached the end of a branch, and therefore no safety check
has been performed.
The (currently only) path exploration strategy still pops paths in the
order that they were pushed. This behaviour means that the paths that it
pops will always alternate between the next instruction of a goto, and
the target of that same goto. The test suite is updated to reflect this
strategy.
0 commit comments