printf 에서의 SIGSEGV
글쓴이: sozu / 작성시간: 화, 2005/08/09 - 4:22오후
Program received signal SIGSEGV, Segmentation fault.
0xb7e363ca in _IO_file_xsputn () from /lib/tls/i686/cmov/libc.so.6
(gdb) up
#1 0xb7e0f681 in vfprintf () from /lib/tls/i686/cmov/libc.so.6
(gdb) up
#2 0xb7e17d43 in fprintf () from /lib/tls/i686/cmov/libc.so.6
(gdb) up
fprintf() 에서 SIGSEGV가 나는데 혹시 과도한 출력으로 인한 버퍼 오버플로우가 아닌지요?
현재 상황은 소켓 fd를 통해 얻은 출력 스트림으로 fprintf를 시도하였으며, 매우 빈번한 호출이 이루어집니다.
혹시 아시는분 있으시면 답변 부탁드립니다.
Forums:
과도한 출력으로 인한것 같지는 않습니다.(과도한 출력이라면 이미, 커널에
과도한 출력으로 인한것 같지는 않습니다.(과도한 출력이라면 이미, 커널에서 블록되었을것으로 간주됩니다. 블록킹소켓이라면)
저라면 2가지로 시도해보겠습니다.
* 만일 소켓 fd를 통해 얻은 출력스트림이, FILE *fsockfd라면...
setvbuf (fsockfd, NULL, _IONBF, 0);
를 수행해서 일단 버퍼링을 제거해 보시기 바랍니다.
* 다른 한가지는 fprintf()에서 레퍼런스하는 포인터를 의심해 보겠습니다.
* 또다른 가정은 혹시 fprintf()가 아닌 다른 곳에서 이미 Segment violation이 발생하지 않았나?라고 생각해봅니다.
주저리,,, 답이 없네요... 죄송....
댓글 달기