[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: New oskit-mach debugging log - failed assertion 'port->ip_srights > 0'



Hi, mission accomplished. ${root} and $(task-create) are NULL.
I don't fully understand how this works, so the ball is in your
court.


Marcus Brinkmann wrote:

Ok, so there is a bug in the boot script cleanup handler.  It should
probably be more helpful.  ;)

module 0: /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume) module 1: /lib/ld.so.1 /hurd/exec $(exec-task=task-create) 2 multiboot modules
You are using the less tested new method of booting.  As a work around, you
might want to try to use the old serverboot method of booting.  But please
keep on track of this problem, so we can fix it!  (We want to get rid of
serverboot asap).  Dig out any of the older installation instructions how to
boot with serverboot.

I tried this. It gets a bit further along and then hangs when it tries
to initialize /hurd/ext2fs.static  -- but first things first.

The interesting part for me is not so much why the assertion fails, but why
you get into the cleanup handler with ABORTING == 1 (see frame #5)


error 5 is (kern/boot_script.h):

#define BOOT_SCRIPT_UNDEF_SYM           5

We should use an enum here so it is more apparent.  So it hit an undefined symbol
in boot_script_exec, line 560, which means it could not resolve a variable. Set a break point at that line and see what ARG, SYM etc look like (eg where
in the boot script parsing it fails).

Somehow it doesn't like your GRUB boot configuration.  You should be able to
find out what it is and how to fix it, but you should also try to fix the
other, deeper problem so other users get a more helpful response than an
instant kernel reboot ;)

Ok, I did this. It appears that everything after "-T typed" is getting lost; i.e.
${root} and $(task-create) are equal to ""

Here is my script capture.
<snip>

Script started on Sun Mar 10 22:50:50 2002
<1>(mirage)[/usr/src/gnu/oskit-mach.build]
# i686-linux-gdb GNU gdb 5.0
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 "--host=hppa1.1-unknown-linux-gnu --target=i686-linux".
(gdb) file kernel
Reading symbols from kernel...done.
(gdb) target remoe te /dev/ttyS0
Remote debugging using /dev/ttyS0
0x0013dd50 in main (argc=172448, argv=0x0) at ../hurd-20020103/oskit-mach/oskit/x86/main.c:90
90	}
(gdb) b hurd-20020103/oskit-mach/kern/boot_scrip.c  t.c  :560
No source file named hurd-20020103/oskit-mach/kern/boot_script.c.
(gdb) b hurd-20020103/oskit-mach/kern/boot_script.c:560[1@.[1@.[1@/
Breakpoint 1 at 0x128ce9: file ../hurd-20020103/oskit-mach/kern/boot_script.c, line 560.
(gdb) c
Continuing.
Welcome to GNUmach 1.2.91-OSKit!


module 0: /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume) module 1: /lib/ld.so.1 /hurd/exec $(exec-task=task-create) 2 multiboot modules Breakpoint 1, boot_script_exec () at ../hurd-20020103/oskit-mach/kern/boot_script.c:560
560			      error = BOOT_SCRIPT_UNDEF_SYM;
(gdb) p *arg
$1 = {text = 0x0, type = 10, val = 202187480}
(gdb) p *sym
$2 = {name = 0x20e3 "root", type = 0, val = 0, ret_type = 0, run_on_exec = 0}
(gdb) p argv[0\ ]
$3 = 0xc0d29e0 "/hurd/ext2fs.static"
(gdb) p argv[0]  1\ ]
$4 = 0xc0d29f4 "--multiboot-command-line=/boot/kernel root=hd0s1"
(gdb) p argv[1] 2  2]
$5 = 0xc0d2a25 "--host-priv-port=2"
(gdb) p argv[2]  3]
$6 = 0xc0d2a38 "--device-master-port=3"
(gdb) p argv[3]  4]
$7 = 0xc0d2a4f "--exec-server-task=4"
(gdb) p argv[4]  5]
$8 = 0xc0d2a64 "-T"
(gdb) p argv[5]  6]
$9 = 0xc0d2a67 "typed"
(gdb) p argv[6]  7]
$10 = 0x0
(gdb) p argv[7]  8]
$11 = 0x0
(gdb) p argv[8]  9]
$12 = 0x0
(gdb) p argv[9]  10]
$13 = 0x0
(gdb) p argv[10]  1]
$14 = 0x0
(gdb) p argv[11]  2]
$15 = 0x0
(gdb) p argc
$16 = 7
(gdb) l
555			  /* Resolve symbol value.  */
556			  while (sym->type == VAL_SYM)
557			    sym = (struct sym *) sym->val;
558			  if (sym->type == VAL_NONE)
559			    {
560			      error = BOOT_SCRIPT_UNDEF_SYM;
561			      goto done;
562			    }
563			  arg->type = sym->type;
564			  arg->val = sym->val;
(gdb) p sys m->type e
$17 = 0
(gdb) p sym->val
$18 = 0
(gdb) quit    c
Continuing.
../hurd-20020103/oskit-mach/ipc/ipc_port.c:1126: failed assertion `port->ip_srights > 0'
Backtrace: fp=d6d7538
001ab03b 0010a87f 0011cded 00123bd1 0011921c 001280b6 001281a2 00129020
001185b5 00122afa 00121976
_exit(1) called; rebooting...


Program exited with code 01.
(gdb) quit
<2>(mirage)[/usr/src/gnu/oskit-mach.build]
# Script done on Sun Mar 10 22:58:03 2002





Reply to: