1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
(* TEST
include systhreads;
hassysthreads;
{
bytecode;
}{
native;
}
*)
(* Tests statmemprof behaviour when a callback terminates its thread.
The expected behaviour is that the thread exits, but sampling
continues in other threads of the same domain. Note that this test
doesn't currently test that sampling continues! *)
let _ =
let main_thread = Thread.id (Thread.self ()) in
let _:Gc.Memprof.t = Gc.Memprof.(start ~callstack_size:10 ~sampling_rate:1.
{ null_tracker with alloc_minor = fun _ ->
if Thread.id (Thread.self ()) <> main_thread then
raise Thread.Exit;
None })
in
let t = Thread.create (fun () ->
ignore (Sys.opaque_identity (ref 1));
assert false) ()
in
Thread.join t;
Gc.Memprof.stop ()
|