고수님들 정말 몇달째 똑같은 질문을 올렸는데 답이 없네여 도와

시스템 셧다운시 이상한 에러 메시지와 함께 정상적으로 종료 가 이루어
지지 않습니다.
리눅스 고수님 제발 도와 주세여 진짜루 거짓말 않하구여 저 이걸루 4개월
동안 고생하고 있습니다.
어떤 리눅스 버전을 깔아두 이렇게 되더군여
래드햇 7.0 버전 까지는 셧다운시 아래와 같은 에러메지시를 뿌리고 시스
템이 멈춤니다.
래드햇 7.1 (7.2, 7.3, 8.0 모두 설치해봤어여 ㅡㅡ;)이상 버전 부터는 셧
다운시
md stopping all md drives
라는 메시지를 출력하고 끝도 없이 계속 <00000002> <0d000000> 와 비슷
한 메시지들이
계속 출력 됩니다 정말 끝없이여 결국 전원을 강제로 종료 하기 전까지는
계속 출력 됩니다.
제발 부탁 드립니다. 이 에러만잡으면 정말 세상 똑바로 착하게 살겠습니
다.
이것은 레드햇 7.0을 깔았을 때 셧다운시 출력되는 마지막 부분의 메시지
들입니다.
보시고 자세한 설명과 왜 이런 메시지들 이 출력 되는지 제발 가르쳐 주세
여.
해결 할수 있는 방법 제발 제발 부탁 드립니다. 먼저 저의 컴퓨터 사양 부
터 설명하고
그밑에 에러 메시지글 적겠습니다. 제발 도움점 주십시오...
CPU 사양 입니다.
Processor------------------------------------
Name Intel Pentium III
Code Name Katma?
Package Slot 1 SECC2
Technology 0.25?
Specification Intel Pentium III 550MHz
Family 6 Model 7
Stepping 3 Ext. Family 0
Ext. Model 0 Revision kC0
Instructions MMX, SSE
Clocks----------------------------------------
Core Speed 551.2MHz
Multiplier x5.5
FSB 100.2MHz
Bus Speed 100.2MHz
Cache-----------------------------------------
L1 Data 16Kbytes
L1 Code 16Kbytes
Level 2 512Kbytes
##############################################
MAINBOARD 사양 입니다.
Motherbord------------------------------------
Manufacturer MICRO-STAR INTERNATIONAL CO. LTD
Model MS-6163[i440BX] 2X
Chipset Intel i440BX/ZX
Rev. C1
Southbridge Intel 82371(PllX4)
Sensor Winbond W83782D
BIOS------------------------------------------
Brand Award Software International, Inc.
Version 4.51PG
Date 10/20/98
AGP-------------------------------------------
Revision 1.0
Data Transfer Rate 2x
Aperture 64Mb
side Band enabled
에러 메시지는 다음과 같습니다. 제발 봐 주십시오
Sending all processes the KILL signal… md recovery thread got
woken up …
md recovery thread finished …
mdrecoveryd(6) flushing signals.
Turning off swap [ OK ]
Turning off accounting [ OK ]
Turning off quotas [ OK ]
Unmounting file systems [ OK ]
Unmounting proc file system [ OK ]
The system is halted
Stopping all md seices.
Power down.
general protection fault 0000
CPU 0
EIP 0050[<00008984>]
EFLAGS 00010046
eax 00000000 ebx 00000001 ecx 00000021 edx 00000000
esi 00008226 edi fee1dead ebp 67890000 esp cdab7e16
Process halt (pid 1458, process nr 43, stackpage=cdab7000)
Stack 00008226 67890000 cdab7e32 00000001 00000000 00000003
00005307 00000000
00580000 00018215 81bd81ea 00000000 81160016 fcc80048 7965bfff
0010c010
fcc80000 deadbfff 0018fee1 0018c024 00000000 00010000 dead0000
0296fee1
Call Trace Bad EIP value.
Code <1>Unable to handle kernel paging request at virtual address
00008984
Current->tss.cr3 = 0f2fe000, %cr3 = 0f2fe000
*pde = 00000000
Oops 0000
CPU 0
EIP 0010[]
EFLAGS 00010046
eax 00000000 ebx 00000000 ecx 00008984 edx 00000001
esi cdab7e16 edi cdab7e76 ebp 67890000 esp cdab7b66
ds 0018 es 0018 ss 0018
Process halt (pid 1458, process nr 43, stackpage=cdab7000)
Stack fee1dead 67890000 c02490c2 00008826 fee1dead 67890000
00000000 00000001
00000021 00000000 00008984 00010046 00008985 c02490a3 c010a470
cdab7dda
c01d91a7 c01d927c 00000000 cdab7dda c010a974 c01d927c cdab7dda
00000000
Call Trace Bad EIP value.
Code 8a 04 89 44 24 38 50 68 9f 91 1d c0 e8 f5 9b 00 00 83 c4
/etc/rc0.d/S01halt line 1 1458 Segmentation fault halt -I -d -p
Re: 고수님들 정말 몇달째 똑같은 질문을 올렸는데 답이 없네여
커널코드 속의 버그 라는군요-_-;
다음 패치를 적용하세요
--- arch/i386/kernel/ptrace.c.org Mon Jun 24 013913 2002
+++ arch/i386/kernel/ptrace.c Mon Jun 24 041458 2002
@@ -34,9 +34,11 @@
#define TRAP_FLAG 0x100
/*
- * Offset of eflags on child stack..
+ * Offset of several registers on child stack..
*/
-#define EFL_OFFSET ((EFL-2)*4-sizeof(struct pt_regs))
+#define EAX_OFFSET (EAX*4-sizeof(struct pt_regs))
+#define ORIG_EAX_OFFSET ((ORIG_EAX-2)*4-sizeof(struct pt_regs))
+#define EFL_OFFSET ((EFL-2)*4-sizeof(struct pt_regs))
/*
* this routine will get a word off of the processes privileged stack.
@@ -100,6 +102,19 @@
value &= FLAG_MASK;
value |= get_stack_long(child, EFL_OFFSET) & ~FLAG_MASK;
break;
+ case EIP {
+ /* If the child was interrupted in a system call, set ORIG_EAX
+ * to -1 so that no attempt will be made to restart it.
+ * EAX needs to be restored manually in this case. */
+ long tmp;
+ tmp = get_stack_long(child, ORIG_EAX_OFFSET);
+ if (tmp >= 0) {
+ /* The child was interrupted in a system call */
+ put_stack_long(child, EAX_OFFSET, tmp);
+ put_stack_long(child, ORIG_EAX_OFFSET, -1);
+ }
+ break;
+ }
}
if (regno > GS*4)
regno -= 2*4;
댓글 달기