고수님들에게 문의 드립니다. addressing 에 관하여 .....ㅠㅠ

air74의 이미지

안녕하세요.

몇일 사이에 참 많은 질문을 하는 거 같습니다. 언젠가는 저도 많은 답변을 해서
사람들에게 도움을 줄수 있을 련지..

아래의 두개의 프로그램(실행 하자 마자 죽으면서 siganl_handler 로 하여금 backtrace 를 수행 하도록 함)에 대한 backtrace 분석 결과

program 1 의 backtrace 정보에 의하면 ... __kill() 과 raise() 의 stack 값이 code 영역내에 위치 합니다.

[ 0x438100c] __kill() sp=0x7fff4920
[ 0x4380d98] raise() sp=0x7fff4920

[ 0x343f4f8] sn_assert() sp=0x7fff4948
[ 0x1841780] vpnmgr_exec_child_recovery_single_task() sp=0x7fff4990
[ 0x1841cc8] vpnmgr_exec_child_recovery() sp=0x7fff4dc8
[ 0x23234f0] sit_api_rct_task_death_req() sp=0x7fff4e00
[ 0x3504d98] sn_msg_arriving_handle() sp=0x7fff52b0
[ 0x34e26d8] sn_loop_run() sp=0x7fff7788
[ 0x3289498] main() sp=0x7fff7c60

하지만 동일한 기능을 수행 하는 program2의 backtrace 정보에 의하면 code 영역을 벗어나 있음을 알 수 있습니다.

#0 0x2ab35c54 in kill () at <stdin>:2
#1 0x2ab35970 in *__GI_raise (sig=6)
at ../linuxthreads/sysdeps/unix/sysv/linux/raise.c:33
#2 0x00404238 in sn_assert ()
#3 0x00401180 in bbb ()
#4 0x0040110c in aaa ()
#5 0x00401220 in main ()

이런 차이점을 보이는 이유가 무엇일까요? program2 가 제가 만든 것인데 반드시 program 1 처럼 backtrace 가 되어야 합니다. 어떻게 하여야 할까요?

다음은 /proc/self/map 덤핑 입니다.

00400000-00408000 r-xp 00000000 00:07 1842334 /root/crash/obj/crash
10000000-10001000 rw-p 00008000 00:07 1842334 /root/crash/obj/crash
10001000-10002000 rwxp 00000000 00:00 0
2aaa8000-2aac3000 r-xp 00000000 00:07 2232917 /lib/ld-2.3.2.so
2aac3000-2aac5000 rw-p 00000000 00:00 0
2ab02000-2ab04000 rw-p 0001a000 00:07 2232917 /lib/ld-2.3.2.so
2ab04000-2ac8c000 r-xp 00000000 00:07 2232924 /lib/libc-2.3.2.so
2ac8c000-2accb000 ---p 00188000 00:07 2232924 /lib/libc-2.3.2.so
2accb000-2acd1000 rw-p 00187000 00:07 2232924 /lib/libc-2.3.2.so
2acd1000-2acd4000 rw-p 00000000 00:00 0
7ffee000-7fff8000 rwxp ffff7000 00:00 0

감사 합니다. 수고 하세요.

pynoos의 이미지

2ab04000-2ac8c000 r-xp 00000000 00:07 2232924 /lib/libc-2.3.2.so 

여기에 있는 코드 영역으로 표시되는데, 왜 코드영역에서 벗어나있다고 말씀하시는거죠?

air74의 이미지

00400000-00408000 영역 안으로 넣는 방법은 없나요?

왜냐면.. 위의 경우와 동일 하게 만들어 주고 싶습니다.

어설푼 이..

pynoos의 이미지

두 함수가 다른 모습인것으로 보아, 하나는 쓰레드를 사용하고, 다른 쪽은 그렇지 않나봅니다.

OS architecture, version이 어떻게 되죠?

air74의 이미지

OS arch => mips32 , linux version 은 montavista linux 2.4.20 입니다.

항상 훌륭한 답변 및 좋은 정보에 감사 하고 있습니다. ^^

어설푼 이..

댓글 달기

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