プログラムの経験はあまりないのでなるべく詳しく教えてほしいです

printfによってSegmentation faultが出てしまいました

貰ったプログラムを見ていると関数の初めと終わりにprintf文が書かれてあり、
#ifdef DEBUGで消されてありました。デバッグ用だろうと思いdefine DEBUGを書いて実行したのですが、
あるpthread_createで呼び出された関数を通るとsegmentation faultになってしまいました。。。
調べてみるとどうやらpthread_createで呼び出された関数のprintfが有るか無いかだけでsegmentation faultになるかならないかということが分かりました。

printfがあるかないかのsegmentation faultということが凄く不思議です。
printfが領域を壊しているということでよいのですよね?

ちなみに確か、printf("\tchar xxxxxxxxxxx(www = %d,yyy = %d, zzz = %d); {\n",int www, int yyy、int zzz); とprintf("xxxxxxx end\n")こんな感じでした。


・このpthreadで生まれる関数のprintfの中身をいったん入れるデータ領域などは、pthread_createの時に新たに作られるのでしょうか?
それとも元々のプログラムを実行したときに作られる領域を共有しているのですか?
 ・↑だとしたらpthread_createの時に領域をどれだけ確保しているかとか、わかるのでしょうか?その領域を広げれば解決できるのでしょうか?

・というか、そもそも前提はあっていますか?

・こんな可笑しなエラー、ほかにもありましたら教えてください。

コンパイルはwindows版eclipseのgcc crosscompilerです
実行環境はFreeBSD、ハードウェアのスペックはよくわかりませんが組み込み系です

よろしくお願いします〜!