If I remember correctly, a company once started with Boehm's conservative GC, and by doing things somewhat like you suggest, built a memory-leak-detector product. So you're not alone in going down this sort of path. On Wed, May 2, 2018 at 9:19 AM, Frederic Perriot wrote: > Hello caml-list, > > I'd like to propose a detector to help in the detection of incorrect C > bindings that do not follow the GC rules. > > The idea is rather simple: > > 1. after a minor collection, mprotect the pages of the minor heap to > disallow reads and writes > 2. install a SEGV handler to catch the ensuing faults > 3. if the faulting address is above caml_young_ptr - Max_young_whsize, > unprotect the page and carry on > 4. otherwise, the program has no business accessing a value in the > unallocated part of the minor heap, so let it crash > > I've hacked up a prototype that protects a single page at > caml_young_start, and it catches the bug I mention in my other message > entitled "an implicit GC rule". > > Such a change surely degrades performance, but maybe it would be > useful as a runtime option available through CAMLRUNPARAM, to detect > misbehaved C bindings. > > Does it sound like a viable technique? > > I'm curious to hear what you think. > > thanks, > Frédéric Perriot > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa.inria.fr/sympa/arc/caml-list > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs -- Caml-list mailing list. Subscription management and archives: https://sympa.inria.fr/sympa/arc/caml-list Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs