I'm currently experiencing all kinds of strange issues. I'm trying to replicate problems I have with the Python binding of the SDK I'm working on. I'm linking the 32 bit sixense_s.lib and get crashes and deadlocks.
I once got a NULL-pointer error in USBManager::is_open() (line 93) (same crash as when you don't call sixenseInit) when trying to run this code:
But I cannot replicate that anymore. Instead, I now get an Access violation when caling sixenseExit() the second time, like this:Code:sixenseInit(); sixenseExit(); sixenseInit(); sixenseIsBaseConnected(0);
Call Stack:Code:sixenseInit(); sixenseExit(); sixenseInit(); sixenseExit();
When actually using it, there's usually a delay between initialization and exitting. That leads to a deadlock though:Code:HydraCrash1.exe!boost::thread::joinable() + 0x31 bytes C++ HydraCrash1.exe!USBManagerWin32::stop() Line 141 + 0xb bytes C++ HydraCrash1.exe!USBManager::stop() Line 52 C++ HydraCrash1.exe!DriverMain::stop() Line 432 + 0x5 bytes C++ HydraCrash1.exe!sixenseExit() Line 41 C++ > HydraCrash1.exe!main(int argc, const char * * argv) Line 13 + 0x5 bytes C++
This hangs with this call stack:Code:sixenseInit(); Sleep(1000); sixenseExit();
Also, I'd expect the initialization to actually be done by the time sixenseInit() returns - but it isn't until later that USBManagerWin32::check_devices gets called and connects the device, resulting in queries immediately after sixenseInit() to fail.Code:ntdll.dll!_ZwWaitForMultipleObjects@20() + 0x15 bytes ntdll.dll!_ZwWaitForMultipleObjects@20() + 0x15 bytes msvcr100.dll!__unlock_fhandle() + 0x25 bytes kernel32.dll!_WaitForMultipleObjectsExImplementation@20() + 0x8e bytes kernel32.dll!_WaitForMultipleObjects@16() + 0x18 bytes HydraCrash1.exe!boost::this_thread::interruptible_wait() + 0x1b8 bytes C++ HydraCrash1.exe!boost::thread::join() + 0x9a bytes C++ HydraCrash1.exe!USBManagerWin32::stop() Line 141 C++ HydraCrash1.exe!USBManager::stop() Line 52 C++ HydraCrash1.exe!DriverMain::stop() Line 432 + 0x5 bytes C++ HydraCrash1.exe!sixenseExit() Line 41 C++ > HydraCrash1.exe!main(int argc, const char * * argv) Line 11 + 0x5 bytes C++



Reply With Quote
