- 2007-02-18 (Sun) 19:39
- Unix

[code]
static int
func1(void)
{
pthread_mutex_lock(&mutex);
int r = func2();
if (is_error(r)) {
return -1;
}
pthread_mutex_unlock(&mutex);
return 0;
}
[/code]
この手のバグは本当に取りづらい。具合が悪い事に、あるサービス用のクライアントライブラリだったのでこのコードを使っている全てのインスタンスが数十時間後にdeadlockで止まった。
func1がネットワークがらみのコードだったので、偶然ネットワークが不調になってエラーになり、次にこの関数に突入したときに固まったようである。
今回は人の目にお世話になって、debug出来た。なんでこの場所に限ってRAIIを使わなかったのだろう(自分)…。
Similar Posts:
- Newer: 気になる
- Older: PTHREAD_MUTEX_ERRORCHECK_NP
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://kzk9.net/blog/2007/02/pthread_mutex_unlock.html/trackback
- Listed below are links to weblogs that reference
- pthread_mutex_unlock忘れ from moratorium
