Linux -> HP-UNIX 포팅시 스레드 문제...

elbum의 이미지

리눅스에서 스레드소켓통신을 하는 프로그램을 개발했습니다.

리눅스에서는 잘 도는것을 확인하였는데

같은프로그램을 HP-UNIX 기반 서버에 넣고 컴파일을 하였습니다

스레드프로그램이라 옵션은 리눅스와 동일하게

cc -o 오브젝트 소스 -lpthread 를 주었는데

컴파일은 문제가없으나...

실행되면 메모리폴트가 나면서 코어파일이 생성됩니다.

1라인씩 디버그 로그를 찍었더니...

스레드 생성하는 부분에서 에러가 나더군요 (pthread_create)

어떻게 해결하나요? 네이년도 모르고 구글신도 모릅니다 -_-;;;

antaran의 이미지

말씀하신 내용만으론 답변 드리기가 힘들 것 같네요.

그냥 일반론을 말씀드리자면, pthread_create에서 폴트가 나는 것은 드문일인데 pthread_create로 넘어가는 값들이 정확한 값들인지 확인해 보시고, 특히 컴파일러가 내보낸 경고 같은 것들을 잘보시라는 말씀밖엔...

더불어, 폴트가 나는 지점이 항상 그 부분의 잘못으로 폴트가 났다는 걸 의미하진 않으니 위에서 초기화가 잘 되었는지 메모리 침범은 없는지 등등 여러가지로 잘 살펴보시면 어떨까 합니다.

pthread_create를 하는 것을 보니 프로그램의 시작(초기화)부분인 것 같은데 살펴보실 내용이 그리 많지 않으리라 생각되네요.

goodnux의 이미지

아니라면 GNU GCC 환경으로 구성하시고 하시면 될듯 한데요

clique의 이미지

HPUX는 기본 stacksize가 리눅스보다 작습니다.(아마 8KiB 정도 였던걸로)

그래서 함수 등에서 local variable로 큰 메모리를 할당하면 (char buffer[16*1024 등)) 함수가 실행되는 순간 죽기도 합니다. 함수가 지나치게 많이 nested 호출되어서 넘어서는 경우는 확인하지 못했는데요, 동적할당으로 바꾸니 해결된 적이 있습니다. 또는, pthread의 attribute에서 할당 공간의 크기를 애초에 크게 잡는 방법도 있습니다.

FIFO의 이미지

HP-UX는 ANSI C 컴파일러가 기본으로 깔려 있지 않습니다. 그 이전 버전의 C 컴파일러가 있죠...
혹시나 싶어서요.

cinsk의 이미지

SIGSEGV를 캐치해서, sigaction()을 써서 시그널 핸들러를 등록해보세요. 제 기억이 맞다면, SIGSEGV의 경우, stack overflow인지 아닌지 알려주는 정보가, siginfo_t에 있었던 것으로 기억합니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

댓글 달기

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