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
The dynamic analyzer keeps track of lifetimes of heap allocations by emitting Free events for objects being deallocated. We need something similar for stack values, to prevent issues where two locals in different functions get the same pointer, e.g.
fnfoo(){let x = 32;}fnbar(){// We may have `addr_of!(x) == addr_of!(y)` here.let y = 42;}fnmain(){foo();bar();}
This can produce an incorrect PDG where x and y above have the same graph.
The text was updated successfully, but these errors were encountered:
Should investigate whether the "StorageLive" MIR node provides the necessary information for dynamic analysis. Do we get an event signifying the end of the lifetime of the stack allocation. If that is not a viable approach, we need to discuss possible alternative implementations before moving ahead with one of those.
@kkysen raised the question of whether we should more generally handle storage going out of scope (e.g. inside a function). We need to figure out whether we should solve the concrete issue for lighttpd or go directly for the more general solution. Depends on the complexity of solving the more general issue.
The dynamic analyzer keeps track of lifetimes of heap allocations by emitting
Free
events for objects being deallocated. We need something similar for stack values, to prevent issues where two locals in different functions get the same pointer, e.g.This can produce an incorrect PDG where
x
andy
above have the same graph.The text was updated successfully, but these errors were encountered: