fopen() 에서 Segmentation falut 문제

new5244의 이미지

저의 개발 환경입니다.

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)
cliffet의 이미지

보통 이런 문제는 fopen에서 직접적인 원인을 제공했다기 보다는 그 이전에

버퍼 오버런과 같은 문제가 발생했으나 그게 드러나고 있지 않다가 우연히

fopen에서 세그 폴트가 나는겁니다..

물론 다른 이유일 수도 있겠지만 제 경험상 이런 문제의 거의 대다수가

그 원인이었습니다.. 문제의 원인을 찾으려면 소스를 차근차근 찾아봐야 할듯

하네요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.