Ух вы развели тут, стоило отлучиться на выходные)))) Попробую ответить на все увиденные вопросы разом.
К сожалению, простой terminate потока с либой не поможет, т.к. библиотека динамически хапает память и грохнув поток, вся память занятая останется на месте в лучшем случае(а библиотека может хапать очень много памяти), а в худшем udefined behaviour, т.к. мне неизвестно, что либа творит в памяти)
Ф-ия очистки памяти у библиотеки тоже есть, но она так же останавливается в недрах библиотеки и не возвращает значения.
Обнаружился еще один неприятный момент, который ставит к нулю все попытки выделения либы в отдельный процесс - есть ф-ии, которые действительно долго работают в нормальной библиотеке, а в кривой так же приводят к зависанию, соответственно различить их в принципе становится невозможно, т.к. я не определю работает либа на самом деле или просто зависла.
Посмотрим, что скажет на это заказчик))
А выделить работу с библиотекой в отдельный процесс это мало того, что жестко, т.к. на универсальность решения рассчитывать не приходится (хотя я нашел статью, где какие-то австралийцы сделали универсальную обертку для работы с либами, но так и не понял как и примера тоже не нашел), а к тому же сама специфика библиотек очень тягостна. Функции возвращают только true/false, а сами данные передаются обратно через параметр функции, но не в классическом виде, когда мы сами выделяем память для значения, а либа сама выделяет память и отдает нам указатели. Я уже заводил тему про это -
http://www.prog.org.ru/topic_26764_0.html, если помните и как такое тягать между процессами, я не представляю
Но спасибо всем за помощь) Завтра на работе решу, что делать)