2012-04-29 9 views
1

私はpthread_join()の呼び出しで簡単に再現できないエラー条件をC++で持っていましたが、何らかのシグナルが生成されていましたが、どちらがわかりませんがシグナルハンドラが呼び出されて何らかの理由で正常生成された信号に関するデバッグ情報。私が示したスタックトレースを取得しました:pthread_join()の原因となるシグナルは何ですか?

# 2 /lib/tls/libpthread.so.0: pthread_join(...) +0x1c [0xce439c] 

私は(pthread_joinをするためにmanページを見直し)や信号の一切の言及を見ていません。

シグナルが生成された原因とその原因は何ですか?これは何らかの競合状態かもしれません。

+0

ここには、障害の原因が記載されています。http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_join.html Btw、errnoとは何ですか? – nullpotent

+0

@Aljoshaもっと最近の標準を使うほうが良いです:http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_join.html - 無効な引数については動作が未定義になりました。つまり、エラーが返される代わりに信号が発生する可能性があります。 – Potatoswatter

+0

errnoの値は不明です。 – WilliamKF

答えて

2

http://linux.die.net/man/7/pthreads

Signals are used in implementation internally 

http://osr600doc.sco.com/man/html.PTHREAD/pthread_join.PTHREAD.html

The wait in pthread_join is not broken by a signal. 
If a thread waiting in pthread_join receives a signal that is not masked, 
it will execute the signal handler, and then return to waiting in pthread_join. 
Note that this behavior differs from that of pthread_cond_wait. 

http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fapis%2Fusers_25.htm

Threadsafe: Yes 
Signal Safe: No 

基本的に、あなたはでpthread_join()が何らかのに他のいくつかの信号を受け入れていることを経験するかもしれませんエラーまたは外部イベント。

信号の正確な原因を推測することはできません。

P.S.正確な環境が特定されていないため、決定がより困難になります。

+0

これはCentOS 4 32ビットマシンです。 – WilliamKF

関連する問題