caml_invalid_argument(str) is no return and does not free it's argument. So calling it with a string constructed dynamically will mean it'll never get freed. I could construct an ocaml string and pass that to caml_raise_with_arg, but I don't seem to be able to get to the caml_exn_Invalid_argument from c. Am I missing something? Immanuel