SIGSTOP시그널을 만나다..
글쓴이: hatbary / 작성시간: 화, 2003/12/02 - 6:22오후
안녕하세요..기억하실랑가 몰겠지만 얼마전에 질문올린 사람임다..ㅋㅋ
지난번에 prefork로 서버 만들어놨었는데, 얘가 한참 잘돌다가 어느 순간 프로세스는 살아있구, 아무 동작도 안한다구, 그 원인을 알고 싶다고 질문을 올렸었는데...
오랜기다림(?)끝에 strace를 통해서 일단 멈추는 부분을 잡긴 잡았거든요..
read(5, <---요렇게 멈춰있구, 이 프로세스는 SIGSTOP시스널을 받았더군요..
그래서 혹시나 해서 SIGCONT시그널을 줘봤는데, 이넘은 들은척 만척..ㅡㅡ;;
ERESTARTSYS라구 메시지가 있는걸 보니 다시 살리기는 힘든 프로세스인듯 합니다..
그렇다구 SIGSTOP시그널을 핸들링 할수도 없구...
일단 이런 SIGSTOP시그널을 받는 경우는 어떤 경우이며, read에서 멈춘걸로 보아 어디에서 문제가 발생했는지, 혹시 아시는 분 계시면 답변주시면 정말 고맙겠습니다..
여기 게시판에 보니깐 SIGSTOP에 대한 글은 별로 없더군요..
그럼 답변에 미리 감사드리면서..꾸벅
아참..그때 상황을 간략히 말씀드리면...서버프로세스가 8개가 떠있는데, 평소에는 ESTABLISHED가 하나 혹은 두개 정도 있었는데, 얘가 5개 6개 늘어나더니 10까지 늘어나는 것이었슴다..
그러더니 프로세스중 한넘이 위와 같이 식물프로세스가 되어버리는..흠흠..
Forums:
헙!!제가 먼가 잘못 안듯...strace돌리면 프로세스가 SIG
헙!!제가 먼가 잘못 안듯...
strace돌리면 프로세스가 SIGSTOP을 받는군요..^^;;
이런거 확인해 보세요
SIGSTOP 이 일어난걸로 봐서는 아마도 SIGKILL 도 같이 발생했을 가능성이
있겠군요.
SIGKILL, SIGSTOP은 HARDWARE EXCEPTION에 의해서도 발생 할 수
있습니다. HARDWARE EXCEPTION이라고 함은 메모리를 잘못 참조한다든가
내지는 DIVIDE-BY-0 같은 그런거겠지요.
만약 코드상에 외부에서 강제적으로 죽이는 경우가 아니라면 위의 경우를
고려해 보심이 좋을듯 합니다.
도움되시길바랍니다.
SIGKILL이 발생했다면은...프로세스가 죽어야 하는게 아닌가요?
SIGKILL이 발생했다면은...프로세스가 죽어야 하는게 아닌가요?
근데 프로세스는 살아있는데..
그리구...read에서 블록된 프로세스는 SIGCONT를 줘도 살아나질 못하구, select에서 블록된 프로세스는 SIGCONT시그널을 주니깐 좀 있으니깐 살아나거든요...
도무지 뭐가 원인인지 모르겠습니다..ㅠㅠ
댓글 달기