2012-04-01 8 views
1

実行可能ファイルでvalgrind --leak_check=yesを実行すると、次のエラーが発生します。Valgrind pthread_create woes

==17325== 136 bytes in 1 blocks are possibly lost in loss record 17 of 21 
==17325== at 0x4004C42: calloc (vg_replace_malloc.c:418) 
==17325== by 0xCC5CA9: _dl_allocate_tls (in /lib/ld-2.5.so) 
==17325== by 0xD0BF5C: [email protected]@GLIBC_2.1 (in /lib/libpthread-2.5.so) 
==17325== by 0x8049334: init (prog.c:238) 
==17325== by 0x804C94F: main (prog.c:163) 

これは私のpthread_create呼び出しを指しています。私はスレッドを作成した後にpthread_detachを呼び出しました。私はpthread_joinを呼びたくはありません。私はこれについて調査し、多くの人々が同じ問題に直面していることを発見しましたが、私はこれの正確な理由を見つけることができませんでした。これはpthreadライブラリの動作のためですか?誰かがこの問題について話す良いリンクを提供してください。

答えて

2

デタッチスレッドでpthread_joinを呼び出すことは不正です。スレッドに参加できるようにするには、スレッドを切り離さないでください。

+0

@Iスレッドに参加したくありません。私はどこかで、pthread_joinを呼び出すと問題を解決し、valgrindにエラーはないと読んでいます。私は同じ理由でpthread_detachを呼び出しました。 – Bruce

+0

私はそれに応じて質問を編集しました。 – Bruce