Skip to content

Commit df4f8e5

Browse files
committed
try/catch error handling with seed reporting in simulate loop
1 parent f15aca5 commit df4f8e5

1 file changed

Lines changed: 23 additions & 20 deletions

File tree

Veil/Core/Tools/ModelChecker/Simulation.lean

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -188,27 +188,30 @@ partial def simulate {ρ σ κ : Type} {th₀ : ρ}
188188
let mut totalSteps := 0
189189
while i < cfg.maxTraces do
190190
let traceSeed := actualSeed + i
191-
-- Fast scan: no trace allocation
192-
let (violated, _, stepsUsed) := scanOnce sys params th (mkStdGen traceSeed) cfg.maxSteps
193-
totalSteps := totalSteps + stepsUsed
194-
if violated then
195-
-- Replay with same seed to build counterexample trace
196-
let (maybeResult, _, _) := simulateOnce sys params th (mkStdGen traceSeed) cfg.maxSteps
197-
match maybeResult with
198-
| some result =>
199-
let elapsedMs := (← IO.monoMsNow) - startMs
200-
return {
201-
result := result
202-
tracesRun := i + 1
203-
elapsedMs := elapsedMs
204-
seed := actualSeed
205-
depth := stepsUsed
206-
totalSteps := totalSteps
207-
}
208-
| none =>
209-
-- Scan flagged violation but replay didn't reproduce (should not happen)
191+
try
192+
-- Fast scan: no trace allocation
193+
let (violated, _, stepsUsed) := scanOnce sys params th (mkStdGen traceSeed) cfg.maxSteps
194+
totalSteps := totalSteps + stepsUsed
195+
if violated then
196+
-- Replay with same seed to build counterexample trace
197+
let (maybeResult, _, _) := simulateOnce sys params th (mkStdGen traceSeed) cfg.maxSteps
198+
match maybeResult with
199+
| some result =>
200+
let elapsedMs := (← IO.monoMsNow) - startMs
201+
return {
202+
result := result
203+
tracesRun := i + 1
204+
elapsedMs := elapsedMs
205+
seed := actualSeed
206+
depth := stepsUsed
207+
totalSteps := totalSteps
208+
}
209+
| none =>
210+
i := i + 1
211+
else
210212
i := i + 1
211-
else
213+
catch e =>
214+
IO.eprintln s!"#simulate: error on trace {i} (seed := {traceSeed}): {e.toString}"
212215
i := i + 1
213216
let elapsedMs := (← IO.monoMsNow) - startMs
214217
return {

0 commit comments

Comments
 (0)