SIGILL 의 code 값에 대해서..

inamind의 이미지

훔.. 질문이 너무 복잡했나..

이거라도 알고 싶네요.
sigill 의 종류를 아는 방법이 siginfo_t -> code 를 보는것은 맞는지요?

-----------------------------------------------------------

안녕하세요.

SIGILL 은 다음과 같이 구성되어 있고
siginfo_t->code 에서 이를 구분할 수 있는것으로 알고 있습니다.

< SIGILL > code==1 : ILL_ILLOPC illegal opcode code==2 : ILL_ILLOPN illegal operand code==3 : ILL_ILLADR illegal addressing mode code==4 : ILL_ILLTRP illegal trap code==5 : ILL_PRVOPC privileged opcode code==6 : ILL_PRVREG privileged register code==7 : ILL_COPROC coprocessor error code==8 : ILL_BADSTK internal stack error 헌데 SIGILL 발생시 kernel 의 signal handler 에서 siginfo_t 를 보면 다음과 같네요.

SIGILL si no(4), errno(0) code(196609)

si_code 196609 은 멀까요.. ;;;

----------------------------------------------------------------------------------

사실 문제 자체도 좀 황당한 문제라 문제 공유를 함 해봅니다.

free memory 가 부족할때 간헐적으로 SIGILL 을 받고 죽은 문제입니다.
이 문제는 SIGILL 이 랜덤한 pc 값에서 발생하고
신기한게 실제 arm instruction 이 깨지지 않았음에도 SIGILL 이 발생하였습니다.

SIGILL 을 받았을 경우 signal handler 에서 pc 값 주변의 instruction 들을 읽어서 출력하도록 구현한후
재현을 하였는데 출력된 instruction 들이 binary 에서 offset 비교해본결과 동일하네요.

data instruction 이 깨지지 않았아도 SIGILL 이 발생할 수 있을까요

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.