https://sourceforge.net/p/libmtp/patches/64/

initialize the global usb1 context only once to avoid memory leaks.
diff --git a/src/libusb1-glue.c b/src/libusb1-glue.c
index 333a34a..dd3f7a5 100644
--- a/src/libusb1-glue.c
+++ b/src/libusb1-glue.c
@@ -135,15 +135,22 @@
 
 static LIBMTP_error_number_t init_usb()
 {
+  static int libusb1_initialized = 0;
+
   /*
    * Some additional libusb debugging please.
    * We use the same level debug between MTP and USB.
    */
+  if (libusb1_initialized)
+     return LIBMTP_ERROR_NONE;
+
   if (libusb_init(NULL) < 0) {
     LIBMTP_ERROR("Libusb1 init failed\n");
     return LIBMTP_ERROR_USB_LAYER;
   }
 
+  libusb1_initialized = 1;
+
   if ((LIBMTP_debug & LIBMTP_DEBUG_USB) != 0)
     libusb_set_debug(NULL,9);
   return LIBMTP_ERROR_NONE;