我目前有一个Phidget 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
从我的主线程调用Phidget_open,打开一个也在CentralThreadFunction中打开的互斥锁,libusb_get_string_descriptor_ascii
似乎没有返回我的整个应用程序的死锁。我能做什么 ?