Messages in this thread | | | Date | Sat, 16 Jan 1999 07:14:41 +0100 (CET) | From | Mike Galbraith <> | Subject | Re: A simple way to lock up 2.2.0-pre7 |
| |
On Fri, 15 Jan 1999, Theodore Y. Ts'o wrote:
> From: sliwa@theta1.cft.edu.pl (Cezary Sliwa) > Date: Fri, 15 Jan 1999 17:31:30 +0100 (MET) > > Just press ^C to stop this loop: > > while true; do (cat /dev/tty > /dev/null &); done > > (I tried this at the console). > > Umm.... I get "cat: /dev/tty: Input/output error" repeated many times. > No lock up.....
Hi Ted,
It locks here too.. as normal user. The machine is dead except SysRq still works. The box is looping in __wake_up in sched.c in.. 814 while (next != head) { 815 struct task_struct *p = next->task; 816 next = next->next; 817 if (p->state & mode) 818 wake_up_process(p); 819 } .. and never getting to wake_up_process(p). SysRq-p shows.. EIP: 0010:[<c0112553>] EFLAGS: 00000246 EAX: 00000000 EBX: c2bb1f64 ECX: 00000246 EDX: c2bb0000 ESI: c2365968 EDI: 00000001 EBP: c0293e50 DS: 0018 ES: 0018 CR0: 80050033 CR2: 40014878 CR3: 00101000
EIP: 0010:[<c011255c>] EFLAGS: 00000297 EAX: 00000000 EBX: c2bb1f64 ECX: 00000246 EDX: c2bb0000 ESI: c2365968 EDI: 00000001 EBP: c0293e50 DS: 0018 ES: 0018 CR0: 80050033 CR2: 40014878 CR3: 00101000 .. which are lines 814 and 817. This led me to think that the task list is getting corrupted ala next->next points to next. I added a test for this (oops if true) and was rewarded with the oops below.
To trigger... After you do the initial ^C, you have a few dead cats lying around. FLAGS UID PID PPID PRI NI SIZE RSS WCHAN STA TTY TIME COMMAND 100 0 165 1 0 0 1104 388 read_chan S 3 0:00 /sbin/age 100 0 166 1 0 0 1104 388 read_chan S 4 0:00 /sbin/age 100 0 167 1 0 0 1104 388 read_chan S 5 0:00 /sbin/age 100 515 168 1 7 0 2012 1168 down_failed S 6 0:00 -bash 0 515 214 1 0 0 1096 320 read_chan S 6 0:00 cat /dev/ 0 515 224 1 0 0 1096 320 down_failed S 6 0:00 cat /dev/ 0 515 230 1 0 0 1096 320 down_failed S 6 0:00 cat /dev/ 0 515 238 1 0 0 1096 320 down_failed S 6 0:00 cat /dev/ 0 515 254 1 1 0 1096 320 down_failed S 6 0:00 cat /dev/ 0 515 260 1 3 0 1096 320 down_failed S 6 0:00 cat /dev/ 0 515 268 1 5 0 1096 320 down_failed S 6 0:00 cat /dev/ Every time you press return, one exits with the error message. If you press ^C again on the affected tty before these are all gone.. boom.
The oops... Oops: 0002 CPU: 0 EIP: 0010:[<c0112564>] EFLAGS: 00010246 eax: c2ebe96c ebx: c2b95f64 ecx: c80f5884 edx: c2b94000 esi: c2ebe968 edi: 00000001 ebp: c0293e44 esp: c0293e40 ds: 0018 es: 0018 ss: 0018 Process swapper (pid: 0, process nr: 0, stackpage=c0293000) Stack: c2ebe55d c0293ef4 c01be249 c2ebe96c 00000001 c2ebe55c c2ebe15c c2ebe75c c0293e74 0d112540 00000000 0000f201 c2ebe15d c0293e88 00000046 c02821a8 00000003 00000002 c0293e94 c01c53c9 0000000d c0293e9c c01c57ad c0293ec8 Call Trace: [<c01be249>] (0) [<c01bc877>] (176) [<c01b7f4e>] (36) [<c0119eed>] (16) [<c0108a20>] (8) [<c0106f17>] (64) [<c010a1a0>] (16) [<c0108a20>] (8) [<c0106f17>] (64) [<c0106f66>] (20) [<c0108941>] (16) [<c0106c83>] (60) [<c0100176>] (24) [<ffffffff>] [<c010a165>] 0 [<c010a013>] 0 [<c0109f1c>] 0 [<c01c6352>] 0 [<c01c627e>] 0 [<c01c60a9>] 0 [<c01c4f47>] 0 [<c01c07e5>] 0 [<c01c05db>] 0 [<c01c6105>] 0 [<c01c614e>] 0 [<c01c577d>] 0 [<c01c53a1>] 0 [<c01c5216>] 0 [<c0112540>] 0 [<c0109c75>] 0 [<c010a18b>] 0 [<c0119eab>] 0 [<c01b7f12>] 0 [<c01bc7ac>] 0 [<c01bd77a>] 0 [<c01b860d>] 0 [<c01b4824>] 0 [<c01b979d>] 0 [<c01b430f>] 0 [<c01b46b3>] 0 [<c02322d6>] 0 [<c0232223>] 0 [<c0112540>] 0 [<c01100e3>] 0 Code: c6 05 00 00 00 00 00 8b 02 85 c7 74 e2 52 e8 05 f9 ff ff 83 Using `/usr/src/linux/System.map' to map addresses to symbols.
>>EIP: c0112564 <__wake_up+34/58> Trace: c01be249 <n_tty_receive_buf+ae5/b20> Trace: c01bc877 <flush_to_ldisc+db/e8> Trace: c01b7f4e <console_bh+4a/f8> Trace: c0119eed <do_bottom_half+51/7c> Trace: c0108a20 <ret_from_intr> Trace: c0106f17 <cpu_idle+47/74> Trace: c010a1a0 <do_IRQ+48/54> Trace: c0108a20 <ret_from_intr> Trace: c0106f17 <cpu_idle+47/74> Trace: c0106f66 <sys_idle+22/34> Trace: c0108941 <system_call+41/50> Trace: c0106c83 <start_kernel+1a3/1ac> Trace: c0100176 <L6> Trace: ffffffff Trace: c010a165 <do_IRQ+d/54> Trace: c010a013 <do_8259A_IRQ+13/a8> Trace: c0109f1c <handle_IRQ_event+10/70> Trace: c01c6352 <keyboard_interrupt+e/28> Trace: c01c627e <handle_kbd_event+12/d8> Trace: c01c60a9 <do_acknowledge+d/5c> Trace: c01c4f47 <handle_scancode+13/2d4> Trace: c01c07e5 <add_keyboard_randomness+d/28> Trace: c01c05db <add_timer_randomness+13/210> Trace: c01c6105 <pckbd_pretranslate+d/44> Trace: c01c614e <pckbd_translate+12/108> Trace: c01c577d <do_spec+d/44> Trace: c01c53a1 <enter+d/54> Trace: c01c5216 <put_queue+e/9c> Trace: c0112540 <__wake_up+10/58> Trace: c0109c75 <enable_8259A_irq+d/38> Trace: c010a18b <do_IRQ+33/54> Trace: c0119eab <do_bottom_half+f/7c> Trace: c01b7f12 <console_bh+e/f8> Trace: c01bc7ac <flush_to_ldisc+10/e8> Trace: c01bd77a <n_tty_receive_buf+16/b20> Trace: c01b860d <con_flush_chars+d/24> Trace: c01b4824 <set_cursor+10/8c> Trace: c01b979d <clear_selection+d/54> Trace: c01b430f <complement_pos+13/11c> Trace: c01b46b3 <add_softcursor+f/dc> Trace: c02322d6 <vgacon_cursor+12/1d4> Trace: c0232223 <vgacon_set_cursor_size+13/b4> Trace: c0112540 <__wake_up+10/58> Trace: c01100e3 <do_page_fault+13/360> Code: c0112564 <__wake_up+34/58> Code: c0112564 <__wake_up+34/58> c6 05 00 00 00 movb $0x0,0x0 Code: c011256b <__wake_up+3b/58> 8b 02 movl (%edx),%eax Code: c011256d <__wake_up+3d/58> 85 c7 testl %eax,%edi Code: c0112575 <__wake_up+45/58> 74 e2 je ffffffef <_EIP+0xffffffef> Code: c0112577 <__wake_up+47/58> 52 pushl %edx Code: c0112578 <__wake_up+48/58> e8 05 f9 ff ff call fffff918 <_EIP+0xfffff918> Code: c011257d <__wake_up+4d/58> 83 00 90 addl $0xffffff90,(%eax) Code: c0112586 <__wake_up+56/58> 90 nop Code: c0112587 <__wake_up+57/58> 90 nop
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |