Miri termination and reporting categories #
This is the pinned diagnostics.rs::TerminationInfo classification boundary.
It distinguishes program exit, abnormal termination, user interruption,
unsupported operations, UB reports and deadlock
reports. report_result labels only DataRace, StackedBorrowsUb, and
TreeBorrowsUb as UB among these machine-stop variants. This is a reporting
taxonomy, not a proof that a program is safe or a model of all interpreter
errors.
The machine-stop variants in pinned Miri's TerminationInfo.
Diagnostic-only payloads are retained as strings; pointer/span/history fields
do not affect the report_result category.
- exit (exitCode : Int) (leakCheck : Bool) : TerminationInfo
- abort (message : String) : TerminationInfo
- interrupted : TerminationInfo
- unsupportedInIsolation (message : String) : TerminationInfo
- stackedBorrowsUb (message : String) : TerminationInfo
- treeBorrowsUb (title : String) : TerminationInfo
- int2PtrWithStrictProvenance : TerminationInfo
- globalDeadlock : TerminationInfo
- localDeadlock : TerminationInfo
- multipleSymbolDefinitions (linkName : String) : TerminationInfo
- symbolShimClashing (linkName : String) : TerminationInfo
- dataRace (involvesNonAtomic : Bool) : TerminationInfo
- unsupportedForeignItem (item : String) : TerminationInfo
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Observable category used by report_result; diagnostic rendering details
and spans are deliberately outside this classification.
- regularExit (exitCode : Int) (leakCheck : Bool) : TerminationReport
- abnormalTermination : TerminationReport
- interrupted : TerminationReport
- unsupportedOperation : TerminationReport
- undefinedBehavior : TerminationReport
- globalDeadlock : TerminationReport
- localDeadlock : TerminationReport
- otherMachineStop : TerminationReport
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Concurrency.instDecidableEqTerminationReport.decEq (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) Miri.Concurrency.TerminationReport.interrupted = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) Miri.Concurrency.TerminationReport.undefinedBehavior = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) Miri.Concurrency.TerminationReport.globalDeadlock = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) Miri.Concurrency.TerminationReport.localDeadlock = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) Miri.Concurrency.TerminationReport.otherMachineStop = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.abnormalTermination (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.abnormalTermination Miri.Concurrency.TerminationReport.abnormalTermination = isTrue ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.interrupted (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.interrupted Miri.Concurrency.TerminationReport.interrupted = isTrue ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.unsupportedOperation (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.unsupportedOperation Miri.Concurrency.TerminationReport.unsupportedOperation = isTrue ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.undefinedBehavior (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.undefinedBehavior Miri.Concurrency.TerminationReport.undefinedBehavior = isTrue ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.globalDeadlock (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.globalDeadlock Miri.Concurrency.TerminationReport.globalDeadlock = isTrue ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.localDeadlock (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.localDeadlock Miri.Concurrency.TerminationReport.localDeadlock = isTrue ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.otherMachineStop (Miri.Concurrency.TerminationReport.regularExit exitCode leakCheck) = isFalse ⋯
- Miri.Concurrency.instDecidableEqTerminationReport.decEq Miri.Concurrency.TerminationReport.otherMachineStop Miri.Concurrency.TerminationReport.otherMachineStop = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Classification from the pinned diagnostics.rs::report_result match.
Equations
- (Miri.Concurrency.TerminationInfo.exit code leaks).report = Miri.Concurrency.TerminationReport.regularExit code leaks
- (Miri.Concurrency.TerminationInfo.abort message).report = Miri.Concurrency.TerminationReport.abnormalTermination
- Miri.Concurrency.TerminationInfo.interrupted.report = Miri.Concurrency.TerminationReport.interrupted
- (Miri.Concurrency.TerminationInfo.unsupportedInIsolation message).report = Miri.Concurrency.TerminationReport.unsupportedOperation
- Miri.Concurrency.TerminationInfo.int2PtrWithStrictProvenance.report = Miri.Concurrency.TerminationReport.unsupportedOperation
- (Miri.Concurrency.TerminationInfo.unsupportedForeignItem item).report = Miri.Concurrency.TerminationReport.unsupportedOperation
- (Miri.Concurrency.TerminationInfo.stackedBorrowsUb message).report = Miri.Concurrency.TerminationReport.undefinedBehavior
- (Miri.Concurrency.TerminationInfo.treeBorrowsUb title).report = Miri.Concurrency.TerminationReport.undefinedBehavior
- (Miri.Concurrency.TerminationInfo.dataRace involvesNonAtomic).report = Miri.Concurrency.TerminationReport.undefinedBehavior
- Miri.Concurrency.TerminationInfo.globalDeadlock.report = Miri.Concurrency.TerminationReport.globalDeadlock
- Miri.Concurrency.TerminationInfo.localDeadlock.report = Miri.Concurrency.TerminationReport.localDeadlock
- (Miri.Concurrency.TerminationInfo.multipleSymbolDefinitions linkName).report = Miri.Concurrency.TerminationReport.otherMachineStop
- (Miri.Concurrency.TerminationInfo.symbolShimClashing linkName).report = Miri.Concurrency.TerminationReport.otherMachineStop
Instances For
Only actual borrow-checker UB and data-race termination variants receive
the Undefined Behavior report label in report_result.