The code below leaks memory when running on OCaml 5 trunk, but by not starting the domain it stops leaking memory.
let _domain =
Domain.spawn (fun () ->
let rec loop () = loop () in
loop ())
let big_list = List.init 10_000_000 (fun n -> n)
let rec loop chain =
let _ = Marshal.to_string big_list [] in
loop chain
let () = print_endline "starting"
let () = loop ()