Цитата(Quasar @ Sep 11 2012, 15:00)

VmData с запуском нового потока только растет, и не уменьшается по его завершению, я так понимаю, что память выделенная под стек не освобождается. Это нормально или я неверно интерпретирую полученные данные?
Посмотрите вывод команды pmap <PID> - там должно быть хорошо видно, что за блоки памяти выделяются процессом.
Вы создаете detached threads или нет? Если нет, Вы в порождающем потоке выполняете pthread_join()?
Если тоже нет, то ИМХО у Вас будет, как минимум, в памяти оставаться стек каждого отработавшего потока.
Чтобы стек освобождался, Вы должны либо "открепить" созданный поток (выполнить pthread_detach(thr)), либо отслеживать его завершение в родительском потоке и выполнять pthread_join().
Как будет завершаться поток (через вызов pthread_exit() или через return NULL) значения не имеет.