[질문] pthread_exit()시의 에러.

bizzare의 이미지

그동안 스레드에 대해 많이 여쭤봤는데요.
이제 마지막 장벽인 것 같습니다.

IBM에서 pthread 를 이용하여 외부 라이브러리의 함수를 하나 호출하고 있습니다.
그런데, 함수 호출이 다 끝나고, pthread_exit(~~);를 호출할 때 프로그램이 종료됩니다.

하지만 pthread를 사용하지 않고 직접 외부 라이브러리의 함수를 호출할 때는 아무 문제없이 잘 돌아가고요.

보통 이런 경우는 어떤 문제일까요?
어떤 부분을 살펴봐야 할 지 너무 막연하네요.
대충, 뭔가 라이브러리 내에서 메모리 할당한 것에 대한 해제가 적절치 못한 것은 아닌지 의심하고 있긴 한데..

조언 부탁드립니다.

wfellow의 이미지

글쎄요,.. 위의 글을 읽어 보면 실수하실 분은 아니실 것으로 판단이 되는뎅...( 점집 차릴까나?)

pthread_exit()의 인수 부분(예를 들어서 (void*)NULL등등..)을 사용하시고 pthread_join()의 두번째 인수에서 받고자 노력할 때(예를 들면 (void**)status등등..) 말씀하신 비슷한 현상이 있긴 하졈..

-----[꼬릿말 절취선 시작]-----
삽질전에 먼저 구글신께 기도하자.
-----[꼬릿말 절취선 끝]-----

체스맨의 이미지

그런 경우는 일반적으로 그 호출한 함수가 다중 스레드 환경에서
제대로 작동하지 못하는 경우일 가능성이 많습니다.

아니면 개발자가 잘 못 코딩한 것일 수도 있구요...

Orion Project : http://orionids.org

bizzare의 이미지

스레드를 만들기 전에 라이브러리를 로드해 놓고서
그 라이브러리를 스레드 내에서 Free하는 코드가 있더군요.

이 부분을 수정하니 잘 해결됩니다. :-)

^^;;;

그러나 다른 플랫폼들에서는 문제없이 돌아갔으니. 크크크. ^^

어렵습니다. 정말.

정말 깨끗하고 멋진 프로그램을 짜고 싶습니다.

체스맨의 이미지

어이 없는 오류가 아니라, 매우 중요한 실수입니다.

저도 그 오류를 겪은 적이 있습니다. 모듈이 동적 로드되고 어떤
이벤트가 발생하면 (예를 들어 윈도우를 닫는) 스스로 제거되게
하는 경우, 제거 되는 중 실행해야 할 코드 세그먼트를 잃어버리기
때문에 발생하는 오류였지요.

저는 리스트에 garbage 를 쌓아 놓고 메인 쓰레드에서
쌓여있는 garbage 를 제거하도록 해결했었습니다.

Orion Project : http://orionids.org

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.