쓰레드를 관리하는 쓰레드가 사라집니다.

버그소년의 이미지

제가 알기론 아직까지 리눅스에서는 pthread가 쓰레드가 아닌

프로세서를 여차저차해서 사용하는것으로 알고있습니다.

그래서 쓰레드 하나를 생성해도 메인 프로세스와 쓰레드를 관리하는 프로세스, 그리고

쓰레드에 해당하는 프로세스, 이렇게 3개의 프로세스가 생성되는데요..

PID도 비교해보니 최초 메인프로세스가 1이라면 쓰레드 관리프로세스는 2,

쓰레드에 해당하는 프로세스는 3이더군요.

만든 데몬 하나가 한참(몇일) 잘 작동하다가 그냥 멎어버리는 현상이 있어서 프로세스를

확인해 보니 관리 프로세스에 해당하는 메인프로세스PID + 1인 프로세스가 죽었더군요.

쓰레드가 죽었다면야 코드를 수정하고 어쩌구 하겠지만.. 리눅스가 만드는

프로세스가 죽었으니.. 어떻게 디버깅을 해야할지 모르겠습니다.

죽는 것도 주기적이지 않기때문에 다양한 테스트도 힘들고요..

어찌해야할지 모르겠습니다.. 도와주세요~

mach의 이미지

버그소년 wrote:

......
확인해 보니 관리 프로세스에 해당하는 메인프로세스PID + 1인 프로세스가 죽었더군요.
........

* 참고:
pid가 프로그래머가 원하는 순서대로 부여될 수는 없습니다. 단지, 근접하면서 증가하는 번호순으로 부여된다는게 맞겠습니다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

버그소년의 이미지

각 쓰레드의 PID를 생성시 저장하여 비교한 것입니다.

PID는 그때그때마다 다르게 되긴 합니다만..

아무작업도 하지 않은 상황에서 실행시켰기때문에 늘 메인프로세스PID + 1이 되더군요.

질문이 좀 이상했는지 모르겠네요..

아무튼.. 코드상에서 생성하지 않은 프로세스가 죽어버립니다.

무엇을 어떻게 해야할지 모르겠네요..

비슷한 경험이 있으시거나 뭐... 참고할 사항이라도 있으면 알려주시면 감사하겠습니다.

가끔은 밥을 굶어도 살 수 있다.

김충길의 이미지

프로세스만 관리하는건 젤 상단에 위치하게 하는게 좋을거 같네요

잠 컨트롤 프로세스라고 해야 하나.. 그 프로그램이 실제 작업을 하려는
스레드를 구동하게 하고 (fork -> exec ) 로 하게 하고 fork 의 pid를
계속 관찰중이면서 죽으면 새로운 놈으로 fork -> exec 하는 형태요

디버깅에 대해서는.. 일단 함수단위 로그를 남겨보는게 방법일듯 합니다.
함수가 호출되는 순서를 추적해보는 겁니다.

strace -p <pid> 로 걸어 놓고 죽는 시점에서 어떤 시스템 호출인지
감시도 해보세요

screen + vim + ctags 좋아요~

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.