objdump debuging & Null pointer Exception

2021. 8. 6. 16:52IT

반응형

 

내가 지금 데몬이 죽는데 이 데몬이 죽는현상을 어디서 죽는지 알아야하는 상황..

 

그러려면 주소값을 따라가야하는데 

 

그 주소값이 어디의 뭐냐 이거지..

[  389.910495] chanmon[6390]: unhandled level 1 translation fault (11) at 0x00000000, esr 0x92000005
[  389.914870] pgd = ffffffc03ac6c000
[  389.927242] [00000000] *pgd=0000000000000000, *pud=0000000000000000
[  389.934417]
[  389.934609] CPU: 0 PID: 6390 Comm: chanmon Tainted: P                4.4.60 #167
[  389.936195] Hardware name: Qualcomm Technologies, Inc. IPQ6018/AP-CP01-C3 (DT)
[  389.943882] task: ffffffc03001c200 ti: ffffffc03001c200 task.ti: ffffffc03001c200
[  389.950751] PC is at 0x5589afb354
[  389.958188] LR is at 0x5589afb390
[  389.961578] pc : [<0000005589afb354>] lr : [<0000005589afb390>] pstate: 60000000

이게 문제의 값인데,

 

여기서 저 PC is ~ 이 값을 봐야한다고 한다

 

그럼 저 주소값을 어떻게 찾느냐?

데몬 compile해서 만들어진 실행파일 binary 파일이 있을거아님?

그걸로... 

 

../../../staging_dir/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16/bin/aarch64-openwrt-linux-objdump -d chanmon > log

요런식으로 해서 

log 파일을 열면

 


chanmon:     file format elf64-littleaarch64


Disassembly of section .init:

0000000000002590 <_init>:
    2590:   a9bf7bfd    stp x29, x30, [sp,#-16]!
    2594:   910003fd    mov x29, sp
    2598:   a8c17bfd    ldp x29, x30, [sp],#16
    259c:   d65f03c0    ret

Disassembly of section .plt:

00000000000025a0 <vsprintf@plt-0x20>:
    25a0:   a9bf7bf0    stp x16, x30, [sp,#-16]!
    25a4:   f00000f0    adrp    x16, 21000 <_fini+0x12710>
    25a8:   f9461611    ldr x17, [x16,#3112]
    25ac:   9130a210    add x16, x16, #0xc28
    25b0:   d61f0220    br  x17
    25b4:   d503201f    nop
    25b8:   d503201f    nop
    25bc:   d503201f    nop

00000000000025c0 <vsprintf@plt>:
    25c0:   f00000f0    adrp    x16, 21000 <_fini+0x12710>
    25c4:   f9461a11    ldr x17, [x16,#3120]
    25c8:   9130c210    add x16, x16, #0xc30
    25cc:   d61f0220    br  x17

00000000000025d0 <memcmp@plt>:
    25d0:   f00000f0    adrp    x16, 21000 <_fini+0x12710>
    25d4:   f9461e11    ldr x17, [x16,#3128]
    25d8:   9130e210    add x16, x16, #0xc38
    25dc:   d61f0220    br  x17

00000000000025e0 <ioctl@plt>:
    25e0:   f00000f0    adrp    x16, 21000 <_fini+0x12710>
    25e4:   f9462211    ldr x17, [x16,#3136]
    25e8:   91310210    add x16, x16, #0xc40
    25ec:   d61f0220    br  x17

00000000000025f0 <mcr_wl_socketConvertToSimpleMacStrUpper@plt>:
    25f0:   f00000f0    adrp    x16, 21000 <_fini+0x12710>
    25f4:   f9462611    ldr x17, [x16,#3144]
    25f8:   91312210    add x16, x16, #0xc48
    25fc:   d61f0220    br  x17

.....

뭐 이런식으로 쭉 보인다.. ㅎㅎ 

 

하지만 해결책이 이것이 아니였다고 한다.. 

 

이전에 사용하던 소스라 문제가 없어야하는데 , (그대로 갖다썼는데)

왜 죽냐이거야 !!!

그래서 노가다 하면서 막으면서 찾아봤더니, 

 

값이 없어서  Null 값인걸 갖다가 return 값에 쓰고있으니 바로 뻗는것이였다 ^_^..... 아오.... 

 

꼭 값을 정의해주자 ... 아니근데 왜 이게 다른데서는 된거지..? 이해가 안가네... 

 

 

728x90
반응형

'IT' 카테고리의 다른 글

Ubuntu service Enable/Disable  (2) 2022.06.08
[linux] 서버 core 갯수 확인 command, make -j option  (0) 2022.02.17
Linux squashfs 파일  (0) 2021.08.04
md5sum  (0) 2021.08.02
Mount 란  (0) 2019.06.26