On Wed, Dec 18, 2013 at 6:17 AM, Ivan Gotovchits wrote: > > Hi, > > I've tried a fabulous core library and it broke my exceptions :) > All backtraces are now look like this > > backtrace: > Raised at file "map.ml", line 117, characters 16-25 > Called from file "lib/conv.ml", line 256, characters 19-50 > This is from sexplib. The Exn module in Core_kernel registers an exception printer which looks like this: let () = Printexc.register_printer (fun exc -> match sexp_of_exn_opt exc with | None -> None | Some sexp -> Some (Sexp.to_string_hum ~indent:2 sexp)) Now, if we look at what sexp_of_exn_opt is doing, in sexplib/lib/conv.ml, line 256: match try Some (Addrs.find addr !exn_addr_map) with Not_found -> None with Where Addrs is a Map.Make(_). So for any exception that is not registered with sexplib, Addrs.find will raise Not_found. And since there is one global backtrace buffer, the backtrace gets replaced by this one. I guess we never had this problem because we don't use exception much and the few we have are defined "with sexp". We will work on a fix. I don't have a precise idea for the second part of the problem (core eating all memory).