bug-hurd
[Top][All Lists]
Advanced

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

oskit-mach and the OSENV_NONBLOCKING flag


From: Daniel Wagner
Subject: oskit-mach and the OSENV_NONBLOCKING flag
Date: Tue, 21 Aug 2001 01:20:17 +0200
User-agent: Mutt/1.2.5i

Hi,

After the tip from Igor not to mix two version of oskit I was able to
boot oskit-mach succesfully. But still accessing the network, e.g. using
ping, caused a total crash. 

It is an assertion in oskit-mach/oskit/osenv_mem.c on line 199.




(gdb) b osenv_mem.c:199
Breakpoint 1 at 0x139f0a: file ../../oskit-mach/oskit/osenv_mem.c, line 199.
(gdb) l osenv_mem.c:199
194            Always go directly to physical memory.  */
195         flags |= OSENV_VIRT_EQ_PHYS|OSENV_PHYS_WIRED|OSENV_PHYS_CONTIG;
196     
197       if (in_oskit_interrupt) 
198         /* The oskit documentation says an interrupt caller must set the 
flag.  */
199         assert (flags & OSENV_NONBLOCKING); 
200     
201       if ((oskit_addr_t) block < phys_mem_max)
202         {
203           /* We got physical memory directly from the lmm.  */
(gdb) c
Continuing.
Welcome to GNUmach 1.2.91-OSKit!

Breakpoint 1, free_for_oskit (block=0x368f4e0, flags=15, size=168) at 
../../oskit-mach/oskit/osenv_mem.c:199
199         assert (flags & OSENV_NONBLOCKING); 
(gdb) bt
#0  free_for_oskit (block=0x368f4e0, flags=15, size=168) at 
../../oskit-mach/oskit/osenv_mem.c:199
#1  0x13a62e in mem_free (o=0x26fc40, block=0x368f4e4, flags=15, size=0) at 
../../oskit-mach/oskit/osenv_mem.c:545
#2  0x17f903 in OSKIT_LINUX_oskit_linux_mem_free (block=0x368f4e4, flags=15, 
size=0)
    at ../../../../oskit-20000202/linux/shared/s_kmem.c:52
#3  0x17f955 in OSKIT_LINUX_kfree (p=0x368f4e4) at 
../../../../oskit-20000202/linux/shared/s_kmem.c:82
#4  0x179aa3 in FDEV_LINUX___kfree_skb (skb=0x368f4e4) at 
../../../../oskit-20000202/linux/dev/net_glue.c:340
#5  0x179fbf in skbuff_io_release (io=0x368f524) at 
../../../../oskit-20000202/linux/src/include/linux/skbuff.h:221
#6  0x179d14 in FDEV_LINUX_net_bh () at 
../../../../oskit-20000202/linux/dev/net_glue.c:433
#7  0x16137f in FDEV_LINUX_do_bottom_half () at 
../../../../oskit-20000202/linux/dev/softintr.c:78
#8  0x170f9d in linux_intr (data=0xa) at 
../../../../oskit-20000202/linux/dev/irq.c:113
#9  0x13ad79 in irq_handler (iunit=10, old_ipl=0, ret_addr=0x1545e3, 
regs=0x59e9f78) at ../../oskit-mach/oskit/osenv_irq.c:76
#10 0x154149 in interrupt ()
(gdb) f 3
#3  0x17f955 in OSKIT_LINUX_kfree (p=0x368f4e4) at 
../../../../oskit-20000202/linux/shared/s_kmem.c:82
82              oskit_linux_mem_free((void *) p, KMALLOC_FLAGS, 0);




In OSKIT_LINUX_kfree the flag for oskit_linux_mem_free is set to 
KMALLOC_FLAGS which is:

/* XXX are all these flags really necessary? */
#define KMALLOC_FLAGS   (OSENV_AUTO_SIZE | OSENV_PHYS_WIRED |   \
                         OSENV_VIRT_EQ_PHYS | OSENV_PHYS_CONTIG)

oskit_linux_mem_free just passes the flags to mem_free and mem_free does the 
same. So the flag can never be set to OSENV_NONBLOCKING. And also I haven't 
found the place in the oskit documentation, where it says that the 
interrupt caller must set the flag, as it is mention in free_for_oskit. 

I tested the kernel without the assertion and it worked fine as far as I can 
say. I do not know what to do with it. 

wagi

-- 
Daniel Wagner
email: wagi@gmx.ch

GnuPG: 1024D/DCDE890A (public key available on any keyserver)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]