On 5/27/23 15:35, Jürgen Hötzel wrote:
 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 
I think the commit message should describe the issue and justify the
change in much more detail.
Laszlo