1

我目前有一个死锁的Phidg​​et API线程;这是我的主线程的堆栈跟踪:

1   __lll_lock_wait                                       0x7ffff5b3173c 
2   __lll_lock_elision                                    0x7ffff5b343c7 
3   mos_mutex_lock            mos_lock-pthread.c     288  0x7fffd64b50ee 
4   StartCentralThread        phidget22.c            205  0x7fffd64d45dd 
5   registerChannel           phidget.c              1348 0x7fffd64d2432 
6   Phidget_open_internal     phidget.c              1416 0x7fffd64d2432 
7   list_phidgets             phidgets_parameter.hpp 1076 0x7fffd6139f9b 
    /* list_phidgets is in my own code and calls Phidget_open(...) */

和一个有问题的内部 libphidget 线程:

1  poll                                                   0x7ffff12ba97b 
2  ??                                                     0x7ffff54cb6ec 
3  libusb_handle_events_timeout_completed                 0x7ffff54cc76a 
4  libusb_handle_events_completed                         0x7ffff54cc8b0 
5  ??                                                     0x7ffff54cd1d9 
6  libusb_control_transfer                                0x7ffff54cd539 
7  libusb_get_string_descriptor_ascii                     0x7ffff54ca47e 
8  PhidgetUSBGetString                    usblinux.c  253 0x7fffd64d5319 
9  scanVintDevices                        vint.c      218 0x7fffd64e5a2e 
10 PhidgetManager_poll                    manager.c   380 0x7fffd64bc87c 
11 CentralThreadFunction                  phidget22.c 371 0x7fffd64d4415 
12 start_thread                                           0x7ffff5b2808c 
13 clone                                                  0x7ffff12c4e7f 

从我的主线程调用 Phidg​​et_open,打开一个也在 CentralThreadFunction 中打开的互斥锁,并且libusb_get_string_descriptor_ascii似乎没有返回,这使我的整个应用程序死锁。我能做些什么 ?

4

0 回答 0