захотелось тут один китайский программатор прикрутить через libusb к линуксу, благо что общение с железкой там осуществляется через dll, вызовы в которой прям один в один походят на libusb API.
Соответственно, написал spec-файл для winebuild с описанием соответствия функций в линуксовом исходнике виндовой dll, наваял простенькую затычку, которая дергает функции libusb и ... офигел.
Извините за экспрессию, но иначе это не назвать. dll.so, один и тот же, на одной машине работает корректно, на другой — падает от каждого чиха. Та же последовательность usb-функций, выполнененная из консольного «макета» приложения, отрабатывает удачно на всех доступных мне линуксовых компах.
Подозрения падают на pthreads, которые используются внутри libusb-1.0. Переписал dll.so со старой версией libusb-0.1 — все работает стабильно (она потоки внутри себя не юзает).
Вопрос к знатокам разработки fakedll под вайн — как вы обходитесь с потоками? Где какие грабли в нем расставлены и как их обходить?
--
P.S. Код в силу его дубовости и тупости не выкладываю. Ну, если разве кому понадобится...