需要修复来自外星源的非常庞大的ocaml程序。其中一个问题是程序在看似无辜的线路上崩溃:
Hashtbl.mem loc_to_no loc
OCAMLRUNPARAM="v=63"
,我看到在崩溃前打印的一行:
所涉及的结构定义如下。
loc
是一种
location
.
type ('a, 'b, 'c) automaton = {
aut_id : int ;
mutable start_location : (('a, 'b, 'c) location) option ;
mutable end_location : (('a, 'b, 'c) location) option ;
mutable aut_attributes : 'a ;
}
and ('a, 'b, 'c) location = {
loc_id : int ;
mutable succs : ('c * ('a, 'b, 'c) location) list ;
mutable preds : ('c * ('a, 'b, 'c) location) list ;
automaton : ('a, 'b, 'c) automaton ;
mutable loc_attributes : 'b ;
}