From: Jeff D. <jd...@ka...> - 2001-04-26 03:59:39
|
tje...@te... said: > I trying to start an UML kernel(2.4.3 + ac13 or ac14 patch) on a RH > 7.0 box and it hangs when it tries to bring the ip loop back i/f(lo). Can you run it under the debugger and get a stack trace of the hang? > Also, I want to run PPPOE in UML, but i could not find it in make > xconfig. How do I enable the PPPOE drivers in UML? You figure out how to run drivers/net/Config.in and get only the drivers that make sense under UML :-) That would be the most general way. You could also just add it to one of the config menus. Jeff |
From: Joakim T. <joa...@lu...> - 2001-04-26 17:08:37
|
Here is a backtrace, hope it helps: 0x100bdfed in __sigprocmask (how=1, set=0x50d8ba80, oset=0x0) at ../sysdeps/unix/sysv/linux/sigprocmask.c:48 48 in ../sysdeps/unix/sysv/linux/sigprocmask.c (gdb) backtr #0 0x100bdfed in __sigprocmask (how=1, set=0x50d8ba80, oset=0x0) at ../sysdeps/unix/sysv/linux/sigprocmask.c:48 #1 0x100b1b6d in change_sig (signal=10, on=1) at process.c:213 #2 0x100b612b in irq_handler (sig=26) at trap_user.c:323 #3 <signal handler called> #4 0x100bdfed in __sigprocmask (how=1, set=0x50d8be38, oset=0x50d8be38) at ../sysdeps/unix/sysv/linux/sigprocmask.c:48 #5 0x100b39d4 in set_signals (enable=3) at signal_user.c:57 #6 0x10009690 in remove_wait_queue (q=0x50d880a8, wait=0x50d8bf0c) at fork.c:63 #7 0x1000e68f in sys_wait4 (pid=-1, stat_addr=0xbf7feea8, options=1, ru=0x0) at exit.c:582 #8 0x100b46f0 in execute_syscall (regs= {regs = {4294967295, 3212832424, 1, 0, 3212832572, 3212832360, 4294967258, 43, 43, 0, 0, 114, 1074611913, 35, 534, 3212832324, 43}}) at syscall_kern.c:348 #9 0x100b47f8 in syscall_handler (unused=0x0) at syscall_user.c:73 Extra info I can boot linux 2.4.3+uml patch in single mode then I execute ./ifup lo and it hangs Press ^C and I get my shell promt back. It looks like is it the shell script that hangs(not the kernel) I am now running RH7.1 and a RH7.1 root fs Jocke FROM: Jeff Dike > I trying to start an UML kernel(2.4.3 + ac13 or ac14 patch) on a RH > 7.0 box and it hangs when it tries to bring the ip loop back i/f(lo). Can you run it under the debugger and get a stack trace of the hang? > Also, I want to run PPPOE in UML, but i could not find it in make > xconfig. How do I enable the PPPOE drivers in UML? You figure out how to run drivers/net/Config.in and get only the drivers that make sense under UML :-) That would be the most general way. You could also just add it to one of the config menus. Jeff |
From: Jeff D. <jd...@ka...> - 2001-04-26 18:29:20
|
joa...@lu... said: > Here is a backtrace, hope it helps: Can you step through that to figure out what the loop is? If it's hanging, one of those frames is never returning, and I'd like to know which one. Jeff |
From: Joakim T. <joa...@lu...> - 2001-04-27 07:31:01
|
Ok here it is: 1e0000e GNU gdb 5.0rh-5 Red Hat Linux 7.1 Copyright 2001 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux"... 0x100be021 in __kill () Breakpoint 1 at 0x1000a897: file panic.c, line 52. Breakpoint 2 at 0x100b6d7b: file user_util.c, line 203. Breakpoint 3 at 0x10001553: file init/main.c, line 608. Breakpoint 3, start_kernel () at init/main.c:608 608 printk(linux_banner); (gdb) p current_task.comm $1 = "swapper\000\000\000\000\000\000\000\000" (gdb) cont Continuing. Program received signal SIGINT, Interrupt. 0x100bdfed in __sigprocmask (how=1, set=0x50d8ba70, oset=0x0) at ../sysdeps/unix/sysv/linux/sigprocmask.c:48 48 ../sysdeps/unix/sysv/linux/sigprocmask.c: No such file or directory. in ../sysdeps/unix/sysv/linux/sigprocmask.c (gdb) p current_task.comm $2 = "rc.sysinit\000\000\000\000\000" (gdb) bt #0 0x100bdfed in __sigprocmask (how=1, set=0x50d8ba70, oset=0x0) at ../sysdeps/unix/sysv/linux/sigprocmask.c:48 #1 0x100b1b6d in change_sig (signal=10, on=1) at process.c:213 #2 0x100b612b in irq_handler (sig=26) at trap_user.c:323 #3 <signal handler called> #4 0x100be0cc in sigismember (set=0x50d8be30, signo=14) at sigismem.c:26 #5 0x100b3971 in enable_mask (mask=0x50d8be30) at signal_user.c:42 #6 0x100b39ee in set_signals (enable=3) at signal_user.c:59 #7 0x10009626 in add_wait_queue (q=0x50d880a8, wait=0x50d8bf0c) at fork.c:44 #8 0x1000e322 in sys_wait4 (pid=-1, stat_addr=0xbf7feea8, options=1, ru=0x0) at exit.c:497 #9 0x100b46f0 in execute_syscall (regs= {regs = {4294967295, 3212832424, 1, 0, 3212832572, 3212832360, 429496725 8, 43, 43, 0, 0, 114, 1074611913, 35, 534, 3212832324, 43}}) at syscall_kern.c:348 #10 0x100b47f8 in syscall_handler (unused=0x0) at syscall_user.c:73 (gdb) ne Ambiguous command "ne": next, nexti. (gdb) next 72 in ../sysdeps/unix/sysv/linux/sigprocmask.c (gdb) next change_sig (signal=10, on=1) at process.c:214 214 } (gdb) next irq_handler (sig=26) at trap_user.c:324 324 (*handlers[sig])(sig, sc, user_mode); (gdb) next 325 if(user_mode) interrupt_end(); (gdb) next 326 block_signals(); (gdb) next 327 change_sig(SIGUSR1, 0); (gdb) next 328 set_user_thread(NULL, user_mode, 0); (gdb) next 329 errno = save_errno; (gdb) next 330 } (gdb) next ^[[A ^[[A Program received signal SIGINT, Interrupt. 0x100bdfed in __sigprocmask (how=1, set=0x50d8ba78, oset=0x0) at ../sysdeps/unix/sysv/linux/sigprocmask.c:48 48 ../sysdeps/unix/sysv/linux/sigprocmask.c: No such file or directory. in ../sysdeps/unix/sysv/linux/sigprocmask.c (gdb) next 72 in ../sysdeps/unix/sysv/linux/sigprocmask.c (gdb) next change_sig (signal=10, on=1) at process.c:214 214 } (gdb) next irq_handler (sig=26) at trap_user.c:324 324 (*handlers[sig])(sig, sc, user_mode); (gdb) next 325 if(user_mode) interrupt_end(); (gdb) next 326 block_signals(); (gdb) next 327 change_sig(SIGUSR1, 0); (gdb) next 328 set_user_thread(NULL, user_mode, 0); (gdb) next 329 errno = save_errno; (gdb) next 330 } (gdb) next __sigprocmask (how=1, set=0x50d8be30, oset=0x50d8be30) at ../sysdeps/unix/sysv/linux/sigprocmask.c:72 72 ../sysdeps/unix/sysv/linux/sigprocmask.c: No such file or directory. in ../sysdeps/unix/sysv/linux/sigprocmask.c (gdb) next set_signals (enable=0) at signal_user.c:59 59 ret = enable_mask(&mask); (gdb) next 60 sigemptyset(&mask); (gdb) next 61 if((enable & (1 << SIGIO_BIT)) == 0) sigaddset(&mask, SIGIO); (gdb) next 62 if((enable & (1 << SIGVTALRM_BIT)) == 0){ (gdb) next 63 sigaddset(&mask, SIGVTALRM); (gdb) next 64 sigaddset(&mask, SIGALRM); (gdb) next 65 } (gdb) next 66 if(sigprocmask(SIG_BLOCK, &mask, NULL) < 0) (gdb) next 68 return(ret); (gdb) next 69 } (gdb) next add_wait_queue (q=0x50d880a8, wait=0x50d8bf0c) at fork.c:42 42 wait->flags &= ~WQ_FLAG_EXCLUSIVE; (gdb) next 56 { (gdb) next 40 { (gdb) next 41 next->prev = new; (gdb) next 42 new->next = next; (gdb) next 43 new->prev = prev; (gdb) next 44 prev->next = new; (gdb) next 44 wq_write_unlock_irqrestore(&q->lock, flags); (gdb) next 45 } (gdb) next sys_wait4 (pid=-1, stat_addr=0xbf7feea8, options=1, ru=0x0) at exit.c:499 499 flag = 0; (gdb) next 500 current->state = TASK_INTERRUPTIBLE; (gdb) next 502 tsk = current; (gdb) next 503 do { (gdb) next 505 for (p = tsk->p_cptr ; p ; p = p->p_osptr) { (gdb) next 564 if (options & __WNOTHREAD) (gdb) next 566 tsk = next_thread(tsk); (gdb) next 567 } while (tsk != current); (gdb) next 569 if (flag) { (gdb) next 579 retval = -ECHILD; (gdb) next 581 current->state = TASK_RUNNING; (gdb) next 582 remove_wait_queue(¤t->wait_chldexit,&wait); (gdb) next 583 return retval; (gdb) next 584 } (gdb) next execute_syscall (regs= {regs = {4294967295, 3212832424, 1, 0, 3212832572, 3212832360, 429496725 8, 43, 43, 0, 0, 114, 1074611913, 35, 534, 3212832324, 43}}) at syscall_kern.c:349 349 return(res); (gdb) next 350 } (gdb) next syscall_handler (unused=0x0) at syscall_user.c:74 74 again = 0; (gdb) next 75 if((result == -ERESTARTNOHAND) || (result == -ERESTARTSYS) || (gdb) next 78 UM_SYSCALL_RET(regs) = result; (gdb) next 79 set_repeat_syscall(again); (gdb) next 80 syscall_trace(); (gdb) next 81 syscall_record[index].result = UM_SYSCALL_RET(regs); (gdb) next 82 gettimeofday(&syscall_record[index].end, NULL); (gdb) next 83 ret_from_sys_call(NULL); (gdb) next 84 if(have_signals(NULL, 0)) probe_stack(UM_SP(regs)); (gdb) next 88 set_user_thread(NULL, 1, 1); (gdb) next ^[[A ^[[A Program received signal SIGINT, Interrupt. 0x100bdfed in __sigprocmask (how=1, set=0x50d8bc30, oset=0x0) at ../sysdeps/unix/sysv/linux/sigprocmask.c:48 48 ../sysdeps/unix/sysv/linux/sigprocmask.c: No such file or directory. in ../sysdeps/unix/sysv/linux/sigprocmask.c (gdb) next 72 in ../sysdeps/unix/sysv/linux/sigprocmask.c (gdb) next change_sig (signal=10, on=1) at process.c:214 214 } (gdb) next irq_handler (sig=26) at trap_user.c:324 324 (*handlers[sig])(sig, sc, user_mode); (gdb) next 325 if(user_mode) interrupt_end(); (gdb) next 326 block_signals(); (gdb) p current_task.comm $3 = "rc.sysinit\000\000\000\000\000" Hope this helps Jocke -----Original Message----- From: Jeff Dike [mailto:jd...@ka...] Sent: Thursday, April 26, 2001 21:42 To: joa...@lu... Cc: use...@li... Subject: Re: [uml-devel] 2.4.3 + ac13 or ac14 hangs at boot joa...@lu... said: > Here is a backtrace, hope it helps: Can you step through that to figure out what the loop is? If it's hanging, one of those frames is never returning, and I'd like to know which one. Jeff |