CRASH

포스트: 10
Tags

Posts

10 posts

[리눅스] 커널 크래시: abort@test_and_set_bit

Guillermo Austin Kim|2019년 1월 9일

우선 콜스택부터 점검을 해보면, "kswapd0" 프로세스에서 slab cache를 scanning 하는 도중 커널 크래시가 발생하였음을 알 수 있습니다. 메모리가 부족한 상태로 보입니다. ("kswapd0" 프로세스는 page memory가 부족할 때 실행됩니다.)-000|do_DataAbort(addr = 3244789312, fsr = 3245415784, regs = 0xC1678E40)-001|__dabt_svc(asm) -->|exception-002|test_and_set_bit(asm) // <<**** kernel panic-003|bit_spin_lock(inline)-003|hlist_bl_lock(inline)-003|mb_cache_shrink_scan(?, ?)-0

[안드로이드][리눅스커널] 시그널 - 유저 공간 abort(SIGABRT) 시 동작 시 흐름

Guillermo Austin Kim|2018년 11월 7일

유저 공간에서 zygote가 강제 종료되면서 부팅을 못하는 상황입니다. 커널 로그로 아래 메시지를 볼 수 있습니다.아래 로그는 init 프로세스가 zygote에 SIGABRT(6) 시그널을 전달해서 zygote를 종료시키고 있습니다.[ 46.116831 / 01-02 01:20:24.859][0] init: Service 'zygote' (pid 1777) killed by signal 6[ 46.124107 / 01-02 01:20:24.869][1] init: Service 'zygote' (pid 1777) killing any children in process group 그럼 이 동작을 할 때 커널 관점으로 어떤 코드가 수행되는지 살펴보겠습니다. zygote는 커널 공간에서 "main"

[0410] Slab Memory Corruption Case Study#3 - 디버깅

Guillermo Austin Kim|2018년 4월 23일

난이도: 최하 커널 로그를 보니 Binder:1887_12란 프로세스가 7676767e 란 가상 주소를 처리 못해 데이터 어보트가 발생했습니다.[ 970.135274 / 04-07 17:58:32.685][7] Unable to handle kernel paging request at virtual address 7676767e[ 970.135315 / 04-07 17:58:32.685][7] pgd = d549c000[ 970.135339 / 04-07 17:58:32.685][0] [7676767e] *pgd=91d26831, *pte=00000000, *ppte=00000000[ 970.135392 / 04-07 17:58:32.685][7] Internal error: Oops: 17 [#

[Kernel][Crash] 워크큐(workqueue) 락업(3) at [0321]

Guillermo Austin Kim|2018년 4월 17일

[Kernel][Crash] 워크큐(workqueue) 락업(1) at [0321] [Kernel][Crash] 워크큐(workqueue) 락업(2) at [0321] 코어 덤프에서 계속... worker_pool_idr 전역 변수에 접근하면 (*(worker_pool_idr.top)).ary 각 CPU별 워커풀 인스턴스가 있다고 했죠. (static struct idr) worker_pool_idr = ( (struct idr_layer *) hint = 0xFFFFFFC6307B9308, (struct idr_layer *) top = 0xFFFFFFC6307B9308 -> ( (int) prefix = 0x0, (int) layer = 0x0, (stru