After upgrading from 1.0.15 to 1.0.16 my application crashes in libusb io.c, 
line 1534
(int usbi_handle_transfer_completion(struct usbi_transfer *itransfer,
        enum libusb_transfer_status status)) when unplugging a device with 
active transfers. (incoming endpoints that is waiting for interrupt transfers 
from device).
Unplugging did function properly in 1.0.15.

The crash is a BAD ACCESS,  the inferior stopped because it received a signal 
from the operating system.

Below you will find an excerpt of variable values on the stack when crash 
occurs, please note that status != transfer->status (idk if this is important).

        Locals          
                ctx     @0x102136c10    libusb_context
                        ctrl_pipe       [2]     int [2]
                        debug   2       int
                        debug_fixed     0       int
                        event_handler_active    1       int
                        event_waiters_cond              pthread_cond_t
                        event_waiters_lock              pthread_mutex_t
                        events_lock             pthread_mutex_t
                        fd_added_cb     0       libusb_pollfd_added_cb
                        fd_cb_user_data 0x0     void *
                        fd_removed_cb   0       libusb_pollfd_removed_cb
                        flying_transfers                list_head
                        flying_transfers_lock           pthread_mutex_t
                        hotplug_cbs             list_head
                        hotplug_cbs_lock                pthread_mutex_t
                        hotplug_pipe    [2]     int [2]
                        list            list_head
                        open_devs               list_head
                        open_devs_lock          pthread_mutex_t
                        pollfd_modify   0       unsigned int
                        pollfd_modify_lock              pthread_mutex_t
                        pollfds         list_head
                        pollfds_lock            pthread_mutex_t
                        usb_devs                list_head
                        usb_devs_lock           pthread_mutex_t
                flags   40 '('  uint8_t
                itransfer       @0x102136d28    usbi_transfer
                        flags   1 '\001'        uint8_t
                        list            list_head
                                next    0x0     list_head *
                                prev    0x206000000000  list_head *
                        lock            pthread_mutex_t
                                __opaque        [56]    char [56]
                                __sig   4329794884      long
                        num_iso_packets 1297437784      int
                        timeout         timeval
                                tv_sec  27111757724013315       __darwin_time_t
                                tv_usec 953444  __darwin_suseconds_t
                        transferred     34827584        int
                status  LIBUSB_TRANSFER_COMPLETED       enum 
libusb_transfer_status
                transfer        @0x109b84700    libusb_transfer
                        actual_length   0       int
                        buffer  @0x102408230 "" unsigned char *.
                                *buffer 0 '\0'  unsigned char
                        callback        0x10000ec46 
<UsbWorker::handle_transfer(libusb_transfer*)>      libusb_transfer_cb_fn
                        dev_handle      @0x10408d600    libusb_device_handle *.
                                auto_detach_kernel_driver       0       int
                                claimed_interfaces      1       unsigned long
                                dev     @0x1014d0840    libusb_device *.
                                        attached        0       int
                                        bus_number      20 '\024'       uint8_t
                                        ctx     0x102136c10     libusb_context *
                                        device_address  24 '\030'       uint8_t
                                        device_descriptor               
libusb_device_descriptor
                                        list            list_head
                                        lock            pthread_mutex_t
                                        num_configurations      1 '\001'        
uint8_t
                                        os_priv [-1]    unsigned char [0]
                                        parent_dev      0x10213d4a0     
libusb_device *
                                        port_number     1 '\001'        uint8_t
                                        refcnt  1       int
                                        session_data    89433533131011  
unsigned long
                                        speed   LIBUSB_SPEED_FULL       enum 
libusb_speed
                                list            list_head
                                        next    0x102136c70     list_head *
                                        prev    0x102136c70     list_head *
                                lock            pthread_mutex_t
                                        __opaque        [56]    char [56]
                                        __sig   1297437784      long
                                os_priv [-1]    unsigned char [0]
                        endpoint        131     unsigned char
                        flags   0 '\0'  uint8_t
                        iso_packet_desc [-1]    libusb_iso_packet_descriptor [0]
                        length  64      int
                        num_iso_packets 0       int
                        status  LIBUSB_TRANSFER_NO_DEVICE       enum 
libusb_transfer_status
                        timeout 0       unsigned int
                        type    3       unsigned char
                        user_data       @0x102408170    void *.
                                *user_data      0       void
        Inspector               
        Expressions             
                list_del        <not in scope>   
        Return Value            
        Tooltip         

---
Reply to this email directly or view it on GitHub:
https://github.com/libusbx/libusbx/issues/121
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
libusbx-devel mailing list
libusbx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusbx-devel

Reply via email to