Module Pulselib.PulseDiagnostic
module CallEvent = PulseCallEvent
module Invalidation = PulseInvalidation
module Trace = PulseTrace
module ValueHistory = PulseValueHistory
type access_to_invalid_address
=
{
calling_context : (CallEvent.t * IBase.Location.t) list;
the list of function calls leading to the issue being realised, which is an additional common prefix to the traces in the record
invalidation : Invalidation.t;
invalidation_trace : Trace.t;
assuming we are in the calling context, the trace leads to
invalidation
without further assumptionsaccess_trace : Trace.t;
assuming we are in the calling context, the trace leads to an access to the value invalidated in
invalidation_trace
without further assumptions}
val equal_access_to_invalid_address : access_to_invalid_address -> access_to_invalid_address -> bool
type t
=
|
AccessToInvalidAddress of access_to_invalid_address
|
MemoryLeak of
{
procname : IR.Procname.t;
allocation_trace : Trace.t;
location : IBase.Location.t;
}
|
StackVariableAddressEscape of
{
variable : IR.Var.t;
history : ValueHistory.t;
location : IBase.Location.t;
}
an error to report to the user
val get_message : t -> string
val get_location : t -> IBase.Location.t
val get_issue_type : t -> IBase.IssueType.t
val get_trace : t -> Absint.Errlog.loc_trace