Fixes deadlocks on OCaml5 when trying to get the lock that is already held:
Fatal error during lock: Resource deadlock avoided --- ocaml/guestfs-c.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ocaml/guestfs-c.c b/ocaml/guestfs-c.c index 3888c9456..bcf8e6ab3 100644 --- a/ocaml/guestfs-c.c +++ b/ocaml/guestfs-c.c @@ -395,12 +395,16 @@ event_callback_wrapper (guestfs_h *g, /* Ensure we are holding the GC lock before any GC operations are * possible. (RHBZ#725824) */ - caml_leave_blocking_section (); + bool in_blocking_section = (caml_state == NULL); + + if (in_blocking_section) + caml_leave_blocking_section (); event_callback_wrapper_locked (g, data, event, event_handle, flags, buf, buf_len, array, array_len); - caml_enter_blocking_section (); + if (in_blocking_section) + caml_enter_blocking_section (); } value -- 2.40.1 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs