Finally figured out a bug that was causing the new version of the
graph program to freeze up on the abstraction example breaking2. Oddly
enough, the freezing up could be mitigated by inserting an extra
Printf.printf call. This was unhelpful, though, as it closed off a
valuable debugging aid. Ultimately, I decided to use gdb, and it
turned out that the program was getting stuck in
caml_oldify_local_roots, which I recognised from the days when I had
garbage collection problems. I tried inserting printf statements in
the C code which deals with malloc() and free() and found that free()
was never getting called. A little bit of research on the garbage
collector revealed that one could manually make garbage collection
happen by calling Gc.full_major (). I did that, and it seems cool for
now.