diff options
| author | Pierre Corbineau | 2014-12-16 15:59:52 +0100 |
|---|---|---|
| committer | Pierre Corbineau | 2014-12-16 16:01:25 +0100 |
| commit | 8029f7555f9c6f201cc70b5ecc538b11a861f0aa (patch) | |
| tree | c750b3ea7cafd5ec2176866bbd16208e5335978a /lib/backtrace.ml | |
| parent | d4f5bdd6f7304fac541bb5f4555ecdd6aa42699a (diff) | |
| parent | f88cce2698da000ab9054da31330db70997a41a4 (diff) | |
fix bug #2447 in congruence
Diffstat (limited to 'lib/backtrace.ml')
| -rw-r--r-- | lib/backtrace.ml | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/backtrace.ml b/lib/backtrace.ml index 19b07d8767..b3b8bdea2e 100644 --- a/lib/backtrace.ml +++ b/lib/backtrace.ml @@ -84,18 +84,23 @@ let get_backtrace e = let add_backtrace e = if !is_recording then + (** This must be the first function call, otherwise the stack may be + destroyed *) let current = get_exception_backtrace () in + let info = Exninfo.info e in begin match current with - | None -> e + | None -> (e, info) | Some fragment -> - let bt = match get_backtrace e with + let bt = match get_backtrace info with | None -> [] | Some bt -> bt in let bt = fragment :: bt in - Exninfo.add e backtrace bt + (e, Exninfo.add info backtrace bt) end - else e + else + let info = Exninfo.info e in + (e, info) let app_backtrace ~src ~dst = if !is_recording then |
