쓰레드의 이상동작.. gcc -O2 옵션때문인가요?

버그소년의 이미지

쓰레드 하나를 생성하고,

메인프로세서는 루프를 돌면서 소켓recv를 해서 데이터를 리스트에 저장합니다.

쓰레드는 주기적으로 리스트를 뒤저가며 적절한 작업을 수행합니다.

구조도 상당히 단순하고, 전송되는 데이터도 상당히 적은 수준입니다.

그런데 일정시간동안 동작 후 바보처럼 아무런 동작을 하지 않더군요.

lsstack으로 프로세스보니 정상적일때는

LWP 3495 (initial thread):
0x4011b852 in __libc_recvfrom (0x00000006 ,0xbffff9f8 ,0x00000400 ,0x00000000)
0x0804bc68 in main
LWP 3497 (manager thread):
0x40113bb0 in poll (0x080675d8 ,0x00000001 ,0x000007d0 ,0x4002626c)
0x4001ad96 in __pthread_manager
LWP 3499:
0x400ebde1 in nanosleep (0x00000001 ,0x00000000 ,0xbf7ffb24 ,0x0804b7ed)
0x0804b7f7 in Timer__FPv (0x00000000 ,0xbf7ffca4 ,0x00000000 ,0x4001afe0)
0x4001b0ba in pthread_start_thread

한참을 돌리다가 바보가 된 상태는

LWP 32492 (initial thread):
0x4011b852 in __libc_recvfrom (0x00000006 ,0xbffffa08 ,0x00000400 ,0x00000000)
0x0804bcd8 in _start
LWP 32495 (manager thread):
0x40113bb0 in poll (0x080674d8 ,0x00000001 ,0x000007d0 ,0x4002626c)
0x4001ad96 in __pthread_manager
LWP 32496:
0x400ebde1 in nanosleep (0x00000001 ,0x00000000 ,0xbf7ffb24 ,0x0804b85d)
0x0804b867 in _start (0x00000000 ,0xbf7ffca4 ,0x00000000 ,0x4001afe0)
0x4001b0ba in pthread_start_thread

위에서 보는것과 같이 쓰레드가 이상합니다.

Timer함수를 계속 실행하고 있어야 하는데.. 이상한 곳으로 가 버리더군요.

혹시나 해서 -O2옵션을 제외하고 컴파일하여 테스트중인데 2일째 무사히 돌고있습니다.

(-O 옵션 주고 보통 12시간정도 마다 바보상태가 됩니다.)

debian 2.4.9
gcc version 2.95

컴파일 옵션에 관련해서 주의해야할 내용이나 기타 도움이 될만한 정보 있으면 알려주세요..

purewell의 이미지

답변은 아니고...

저도 O2 옵션을 주면 ㅡ_-) 서버가 산화(?)되어 버리던데...

그래서 그냥 컴파일하고 있죠.

_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.