fopen() 에서 Segmentation falut 문제
글쓴이: new5244 / 작성시간: 목, 2003/09/04 - 7:19오후
저의 개발 환경입니다.
Quote:
Redhat 7.3 kernel 2.4.18-3
glibc 2.2.5-34
gcc 2.96
데몬 프로그램을 만들고 있는데 갑자기 이유 없이 죽는 현상이 발생합니다.
gdb 로 trace 를 해봤더니 fopen() 에서 호출된 chunk_alloc() 에서 segmentation fault 가 발생하더군요.
혹시나 해서 이 프로그램을 hancom linux 3.1 에서 테스트를 해보니 정상적으로 돌더군요. hancom 환경은 glibc-2.3.1-6, gcc 3.2.2 입니다.
일반적인 경우는 아닌것 같은데, 혹시 제가 사용하는 glibc 에 버그가 있는 것인가요?
아래는 gdb 에서 backtrace 한 결과입니다.
Quote:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 32656)]
0x4207a2c4 in chunk_alloc () from /lib/i686/libc.so.6
(gdb) bt
#0 0x4207a2c4 in chunk_alloc () from /lib/i686/libc.so.6
#1 0x4207a058 in malloc () from /lib/i686/libc.so.6
#2 0x4206bb71 in fopen@@GLIBC_2.1 () from /lib/i686/libc.so.6
#3 0x0808ce6e in get_conf (path=0xbffff830 "/tmp/test.conf",
section=0x820e2f5 "test section", field=0x8210092 "status",
result=0xbffff400 "", return_line=0x0) at str.c:343
#4 0x08077902 in read_conf (
conf_file=0xbffff830 "/tmp/test.conf", buf=0x403e3ee8)
at read_conf.c:310
#5 0x0804edc8 in init_conf () at conf.c:889
#6 0x0804edf6 in init () at testagent.c:912
#7 0x0804d3d1 in main (argc=1, argv=0xbffffa74) at testagent.c:163
#8 0x42017499 in __libc_start_main () from /lib/i686/libc.so.6
(gdb)
Forums:
보통 이런 문제는 fopen에서 직접적인 원인을 제공했다기 보다는 그 이
보통 이런 문제는 fopen에서 직접적인 원인을 제공했다기 보다는 그 이전에
버퍼 오버런과 같은 문제가 발생했으나 그게 드러나고 있지 않다가 우연히
fopen에서 세그 폴트가 나는겁니다..
물론 다른 이유일 수도 있겠지만 제 경험상 이런 문제의 거의 대다수가
그 원인이었습니다.. 문제의 원인을 찾으려면 소스를 차근차근 찾아봐야 할듯
하네요
댓글 달기