При форке форкается только та нить которая вызвала форк. Все остальные остаются в родителе и в результате получается однонитевый потомок. Так что вызов pthread_kill_other_threads_np() ни к чему не приведет;))
Трудно сказать почему не видя кода;))
В принципе возможно несколько причин:
- где-то напортачил с памятью (выход за пределы диапазона etc...)
- блокируется на мютексе/семафоре
- где-то некоректно установлен atfork handler...
В общем много можно напридумывать...
Удачи!