Thanks for the comments.
With windows' task manager, I could see that the orphaned
threads cumulated radpidly as worker thread entered and left; this worries me. After the worker thread finished, however, it did not seem to incur any memory, cpu or resource penalty. Also, the threads were destroyed when the program exited.
Another interesting observation: The omp threads were destroyed properly If they were used directly inside the worker thread; The problem only occured when the omp threads were created inside an external function which were called by the worker thread.