I had quite sucess in the past by simply calling Gc.full_major () after any binding call, usually a segfault would immediately occur after the offending one.
That looks indeed suspicious the idomatic way (cf rule 3) of doing this would be:
v = caml_alloc (11, 0);
Store_field (v, 0, caml_copy_int64(buf.f_bsize));
...
CAMLreturn (v);