Kernel Oops에 대한 질문을 드리고 싶어서요 ...
아래와 같이 error가 보였는데요 ,,
어떻게 접근하는 게 좋을지 싶어서 질문을 드립니다.
특히 아래에 보면,, BUG: ~ 로 시작하는 문장은 어떤 의미인지, 또 거기에서 virtual address라고 보여주는 21f9541b는 어떤 주소인지..도 궁금하고요 ...
그 아래에,, priting eip: c0161041도 모르겠고..
*pde = 00000000 도 설명을 부탁드릴 수 있으면 좋겠습니당..
에고 조언 부탁드릴게요 ~
Sep 3 11:07:17 myCom kernel: loop: loaded (max 8 devices)
Sep 3 11:07:17 myCom kernel: EXT3 FS on hda3, internal journal
Sep 3 11:07:17 myCom kernel: kjournald starting. Commit interval 5 seconds
Sep 3 11:07:17 myCom kernel: EXT3 FS on hda1, internal journal
Sep 3 11:07:17 myCom kernel: EXT3-fs: mounted filesystem with ordered data mode.
Sep 3 11:07:17 myCom kernel: e1000: eth0: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex
Sep 3 11:07:17 myCom kernel: e1000: eth1: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex
Sep 3 11:07:17 myCom kernel: test driver
Sep 3 11:12:20 myCom kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
Sep 3 11:16:28 myCom kernel: test driver
Sep 3 11:32:22 myCom kernel: BUG: unable to handle kernel paging request at virtual address 21f9541b
Sep 3 11:32:22 myCom kernel: printing eip:
Sep 3 11:32:22 myCom kernel: c0161041
Sep 3 11:32:22 myCom kernel: *pde = 00000000
Sep 3 11:32:22 myCom kernel: Oops: 0002 [#1]
Sep 3 11:32:22 myCom kernel: SMP
Sep 3 11:32:22 myCom kernel: Modules linked in: xfrm4_mode_tunnel esp4 ipudp iptable_filter ip_tables deflate zlib_deflate zlib_inflate cbc blkcipher ipcomp loop
Sep 3 11:32:22 myCom kernel: CPU: 1
Sep 3 11:32:22 myCom kernel: EIP: 0060:[] Not tainted VLI
Sep 3 11:32:22 myCom kernel: EFLAGS: 00010082 (2.6.19.7 #70)
Sep 3 11:32:22 myCom kernel: EIP is at free_block+0x91/0x120
Sep 3 11:32:22 myCom kernel: eax: 21f9541b ebx: dfd2ce00 ecx: c97c4000 edx: dfd2ce08
Sep 3 11:32:22 myCom kernel: esi: c97c43c0 edi: dfe533c0 ebp: c95a95b8 esp: dfc73ee8
Sep 3 11:32:22 myCom kernel: ds: 007b es: 007b ss: 0068
Sep 3 11:32:22 myCom kernel: Process events/1 (pid: 27, ti=dfc72000 task=dffefa70 task.ti=dfc72000)
Sep 3 11:32:22 myCom kernel: Stack: 564d28a9 0000000b 00000009 c95a9594 c95a9580 0000000b dfd2ce00 c016112f
Sep 3 11:32:22 myCom kernel: 00000000 00000000 00000001 dfe533c0 dfd2ce00 dfe533c0 dfc177c0 00000000
Sep 3 11:32:22 myCom kernel: c0162ad9 00000000 00000000 c941b8a0 c941b8a4 c0130853 00000000 00000027
Sep 3 11:32:22 myCom kernel: Call Trace:
Oops가 발생했을 때,,어느 thread가 실행중이었는지,,
알 수 있는 방법이 있을까요?
조언 부탁드립니다 ~
oops가 발생했을 때...
어느 thread가 실행중인지 궁금하시면요...
커널 코드에서 직접 찍어보세요.
arch/xxx/kernel/traps.c에 커널 웁스 코드가 들어 있을 겁니다.
글고....현재 돌고 있는 건
항상 current structure를 참조 하시면 됩니다.
그리고 커널 웁스 발생시에 Call Trace를 참조 하시면 어떻게 함수가 따라 들어가다가
어느 함수에서 발생했는지 정확하지는 않지만 그래도 파악이 가능합니다.
직접 만드신 test driver 초기화 하다가 난 거 같은데....
메모리 주소 접근이 잘못 됐나보네요.
머리를 굴려라! 그래야 먹고 산다.
감사합니다..
test driver에 문제가 있는게 맞겠죠?
전 이게 test driver 문제인가,,아님..Kernel Compile을 잘못한건가
판단이 잘 안돼서,,우왕좌왕하고 있었거든요 ~
대부분의 문제는...
자기 코드를 의심하는게 빠르죠.
믿지 마세요....^_^;
머리를 굴려라! 그래야 먹고 산다.
하하..~
그렇죠 ^^
그런데,,Kernel Configuration과 Kernel Compile도 제가 한거라서 ㅜㅜ
그것또한 잘 못믿고 있었답니다..
뭔가 빼먹은건 아닌가,,그런 걱정을 하고 있었어요~
댓글 달기