IRC channel logs
2023-06-30.log
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>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>its between rumpusbdisk and netdde <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 <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> 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>f09a574a331527ccebdef88d5cc2e2c45fa072b4 <damo22>but there is another place in the code where that dst_port is dereferenced <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 <damo22>i can access terminal over ssh with usb <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> inetutils-ifconfig -i ${interface} -A 0.0.0.0 <youpi1>that doesn't release the dhcp lease <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? <damo22>hmm i just upgraded my hurd install and now usb3 is broken <damo22>ok i patched acpi.static with my patch and usb3 boots <damo22>but ifdown /dev/eth0 is still hanging <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>but how would that block the other irq thread? <damo22>maybe it never enables the irq again <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>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