CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): wooyou (치즈or빠다)
날 짜 (Date): 2002년 5월 17일 금요일 오후 10시 06분 25초
제 목(Title): [q]pthread안에서 fork에서 deadlock발생


pthread프로그램을 하나 작성했는데, 그중 한 thread에서 fork를 해야할일이
있습니다.
그러나 가끔씩 fork하다가 프로그램이 꼼짝하지 않아서 gdb로 살펴보니
deadlock이 발생하는 것 같습니다.
프로그램안에서 직접 mutex를 사용하지는 않는데, 시스템(?)에서 
pthread_atfork
가 결과적으로 mutex를 걸면서 이때 deadlock이 발생하는 것 같습니다.

아래의 결과를 보면 7번째 frame에서 fork를 호출하면서 0~5까지 시스템이 
자동으로
fork를 수행하기 위해서 올라가는 stack인것 같은데, 여기서 deadlock이 걸리니
꼼짝을 못하겠습니다.

혹시 이에 대해서 좋은 의견 있으시면 부탁드립니다.

(gdb) bt
#0  0xc020f8a0 in __ksleep () from /usr/lib/libc.2
#1  0xc003da4c in pthread_mutex_lock () from /usr/lib/libpthread.1
#2  0xc02235a4 in __thread_mutex_lock () from /usr/lib/libc.2
#3  0xc0220ea8 in sendpath64 () from /usr/lib/libc.2
#4  0xc003e0f8 in pthread_atfork () from /usr/lib/libpthread.1
#5  0xc003e450 in __pthread_fork () from /usr/lib/libpthread.1
#6  0xc021c644 in fork () from /usr/lib/libc.2
#7  0x11bf0 in CProcess::Execute (this=0x7f7f0704, strObj=0x7f7f083c 
"/home/iux/BIN/TxxMain", 
    strArgv=0x7f7f0a3c "TxxMain Tx01 ") at CProcess.cpp:55
#8  0x7d38 in CPms::execute (this=0x7f7f0648, com=@0x7f7f0774) at 
CPms.cpp:344
#9  0x7620 in CPms::start (this=0x7f7f0648) at CPms.cpp:203
#10 0xb9c4 in main (argc=2, argv=0x7f7f051c) at PmsMain.cpp:118

------------------------------------------------------------------------
  쳇바퀴돌듯 똑같은 날의 길어진 그림자 고갤들지 않고
  풀리지 않는 실타래처럼 뒤엉킨 생활은 돌이킬수 없네
  행복의 문은  자신의 마음  자신의 노력에 달려있는것
  열심히 살고 보람도 얻고 진정한 행복을 모두 찾았으면... 우유한잔....
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.