select에서 빠져나오지 못하는 증상에 대한 질문입니다.
글쓴이: loblue / 작성시간: 일, 2007/04/15 - 2:28오후
안녕하세요.
linux 2.4.30 mips-uclinux 임베디드 시스템 상에서
unix domain socket을 이용한 IPC를 사용하고 있습니다.
read 버퍼에 들어왔는지 확인하기 위해 select를 사용하고 있으며 3초간 블럭킹으로 동작하고 있습니다.
많은 양의 데이터를 빈번하게 보내지도 않습니다만
정말 어쩌다가 한번씩 서버쪽에서 select문을 빠져나오지 못하는 상태가 발생하곤 합니다.
언제 빠져나오는지 문제가 발생한 상태로 밤에 걸어놓고 퇴근했다 아침에 확인해보면 여전히 빠져나온 흔적이 없습니다 ㅠ.ㅠ
어디선가 FD를 실수로 닫아버리는지 close나 fclose부분을 모두 찍어봐도 특별히 그런곳이 없구요.
client측에서 보내는 메시지 자체도 특별한게 없습니다
전송하는 size역시 전송측이나 받는측이나 정확합니다.
해당 pthread가 종료된 흔적도 없고 mutex를 사용하지도 않습니다.
netstat -an으로 확인해보면 아래와 같이 레퍼런스 카운트가 늘어납니다.
unix 3 [ ] STREAM CONNECTED 853 /tmp/unix_sock
unix 63 [ ] STREAM CONNECTED 852
굉장히 막연한 질문이라는 것은 알지만 고수님들께서 한번 체크해볼 것이 있는지 알려주시면 정말 감사하겠습니다.
좋은 하루 되세요.
Forums:
해당 소스가
해당 소스가 일반적인 리눅스상에서는 잘 동작하는데 해당 플랫폼에서만
그런지 확인할 필요가 있습니다. 같은 현상이 발생한다면 질문자께서
코딩을 잘못한 상황이라 판단됩니다.
select 을 호출하는 부분이랑 FDSET, FDZERO 을 호출하는 부분을
올려준다면 나름 답변하는데 도움이 될 수 있습니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기