2012-04-01 1 views
1

실행 파일로 valgrind --leak_check=yes을 실행하면 다음 오류가 발생합니다.Valgrind pthread_create 비애

==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

@ 실에 가입하고 싶지 않습니다. 어딘가에 pthread_join을 호출하면 문제가 해결되고 valgrind에서 오류가 발생하지 않습니다. 나는 같은 이유로 pthread_detach를 호출했다. – Bruce

+0

그에 따라 질문을 편집했습니다. – Bruce