I have an issue with a thread spawned by libguide.so that does not terminate at the end of the program. I mention that the program is killed with SIGTERM and I have set up a signal handler that cleans everything up, then causes main thread to exit. Is there anything that needs to be called explicitly to clean up IPP? By attaching with gdb to this thread I can see the following backtrace:
#0 0x4015862c in __pthread_sigsuspend () from /lib/libpthread.so.0
#1 0x40158493 in __pthread_wait_for_restart_signal () from /lib/libpthread.so.0
#2 0x40158cd8 in pthread_key_delete () from /lib/libpthread.so.0
#3 0x4228b8ce in __kmp_runtime_destroy () from /usr/lib/libguide.so
#4 0x4227cea1 in __kmp_cleanup () from /usr/lib/libguide.so
#5 0x4227cc4e in ?? () from /usr/lib/libguide.so
#6 0x42298b00 in __kmp_atomic_lock_32c () from /usr/lib/libguide.so
#7 0x42294120 in ?? () from /usr/lib/libguide.so
#8 0x0000000c in ?? ()
#9 0x4227e947 in __kmp_internal_end_library () from /usr/lib/libguide.so
#10 0x4227e94f in __kmp_internal_end_library () from /usr/lib/libguide.so
#11 0x42280088 in __kmp_internal_end_atexit () from /usr/lib/libguide.so
#12 0x4000b941 in _dl_fini () from /lib/ld-linux.so.2
#13 0x4004befd in exit () from /lib/libc.so.6
#14 0x40037c9c in __libc_start_main () from /lib/libc.so.6
#15 0x08049e91 in _start ()
After detaching, it exits. From the names of the functions, it looks like it's waiting for a signal that is somehow lost, and gdb interrupts it in some way, causing it to wake up and end.
Also relevant may be the fact that on the platform I'm running we use linux threads, not posix threads. I use IPP version 5.3.2.068.
Any ideas to what may happen?