Совершенно точно под стек. Начиная с какой-то из версий 2.6 дефолтный размер стека стал 10 мегабайт. Выход — указывать явно, что-нибудь типа:
pthread_attr_init(&pa);
pthread_attr_setstacksize(&pa,PTHREAD_STACK_MIN + 16384);
result = pthread_create(&thread1, &pa, new_connection,s)
(только если это будет переноситься на другие платформы — имейте ввиду, что там в 64-битных версиях FreeBSD PTHREAD_STACK_MIN неправильно определен, надо давать с запасом)
Это shared. Её сложно отследить…
Эксперимента для — наполняйте какой-нибудь глобальный массив большим количеством данных и смотрите — растёт ли память под поток.
Посмотрите на всякий случай размер стека через pthread_attr_getstacksize, может стоит минимальный стек в 10 метров.