IRC channel logs


back to list of logs

<luckyluke>gabber: for i386 after the ASM it enters c_boot_entry() in model_dep.c, which is still arch-dependant, eventually it ends up in start_kernel()
<luckyluke>sorry setup_main(), in kern/startup.c
<luckyluke>the bootstrap.c is for loading the multiboot modules, but that happens at the end of the boot
<damo22>youpi1: how would i debug the irq sharing bug?
<damo22>it seems to hang releasing the dhcp lease
<damo22>upon shutdown
<damo22>its between rumpusbdisk and netdde
<damo22>these are both irq 11
<damo22>i think the only reason we havent noticed it is because AHCI and net in qemu is irq 10 and 11
<damo22>maybe its a bug with releasing the irq
<damo22>when two handlers are registered for the same irq
<damo22>i think i might know why
<youpi1>damo22: releasing the dhcp lease doesn't quit pfinet, so that wouldn't be on irq release
<youpi1>rather on irq re-enable after packet reception
<youpi1>it's however odd that you see it only with dhcp lease release
<youpi1>perhaps you can try to exercise the stack with some pings, ifdown/ifup, etc.
<youpi1>to be able to trigger easily without halting the whole system
<damo22>if gnumach segfaults, would the console just hang?
<damo22>i see this:
<damo22> if (e->dst_port->ip_references == 1)
<damo22>but lower e->dst_port = MACH_PORT_NULL, so next time it reenters wouldnt it not be able to dereference e->dst_port ->>>>
<youpi1>normally on a fault it would enter kdb
<youpi1>IIRC I fixed that bug
<damo22>but there is another place in the code where that dst_port is dereferenced
<damo22>in the intr_thread
<damo22>why doesnt it need the same check?
<youpi1>because nobody thought about adding it, most probably
<damo22>it cant be because of that, gnumach did not enter kdb
<youpi1>possibly at that point gnumach cannot enter kdb
<youpi1>(for whatever reason)
<damo22>i can access terminal over ssh with usb
<damo22>usb root
<damo22>i dont see this when i shutdown printf ("irq handler [%d]: release a dead delivery port %p entry %p\n", e->id, e->dst_port, e);
<damo22>it hangs before it can release the irq
<damo22>i compiled entire gnumach over ssh with usb disk
<damo22>i can try manually releasing the lease
<damo22># flush leased IP
<damo22> inetutils-ifconfig -i ${interface} -A
<youpi1>that doesn't release the dhcp lease
<youpi1>ifdown /dev/eth0 would, however
<damo22>ifdown /dev/eth0 hangs
<damo22>aha [ 172.5700050] umass0: BBB reset failed, TIMEOUT
<damo22>so an interrupt is not being delivered?
<damo22>[ 247.5700050] umass0: BBB bulk-in clear stall failed, TIMEOUT
<damo22>maybe libddekit is not behaving well with shared interrupts?
<gabber>luckyluke: thanks!
<damo22>hmm i just upgraded my hurd install and now usb3 is broken
<damo22>it tries to access irq 1
<damo22>maybe its the acpi bug
<damo22>ok i patched acpi.static with my patch and usb3 boots
<damo22>but ifdown /dev/eth0 is still hanging
<damo22>youpi: do you have any comments for
<damo22>youpi: it seems that ifdown /dev/eth0 does not release the irq, but ifup /dev/eth0 adds a new irq handler
<damo22>maybe the interrupt thread is stuck?
<damo22>with interrupt off
<damo22>but how would that block the other irq thread?
<damo22>maybe it never enables the irq again
<damo22>i killed netdde and got :
<damo22>irq handler [11]: new delivery port f66c2008 entry f5f7eca8
<damo22>irq handler [11]: release a dead delivery port f67b3890 entry f55c8600
<damo22>irq handler [11]: still 1 unacked irqs in entry f55c8600
<damo22>after i did a ifdown and up
<damo22>seems like there is one unacked irq left in there after you ifdown
<damo22>but it blocks all other interrupts on the same irq
<damo22>youpi: ifdown /dev/eth0 && ifup /dev/eth0 && ifdown /dev/eth0 && ifup /dev/eth0 && killall netdde
<damo22>there is reproducible unacked irqs
<damo22>youpi: why is every static binary so big?? $ echo "int main(){ return 0; }" > haha.c && gcc -static haha.c -o haha && ls -la haha
<damo22>-rwxr-xr-x 1 demo demo 1059420 Jul 1 16:45 haha
<Guest10>Hi hurd