IRC channel logs

2025-07-09.log

back to list of logs

<AlmuHS>Hi. Do someone knows how to compile libtrivfs as a static library (generate a .a file)
<AlmuHS>I want to make a binding to develop translators in Rust which call to libtrivfs to work
<youpi>sneek: later tell AlmuHS the normal build already produces libtrivfs.a and the debian package already installs it
<sneek>Will do.
<damo22>youpi: how do we debug smp?
<damo22>i booted a full smp system without the bsp pinning and it mostly works, but when i use rumpnet and receive a large file it hangs gnumach and i cant enter kdb
<damo22>qemu shows interrupts happening though
<youpi>maybe you can run gdb from the outside ?
<damo22>how does it enter the kernel task?
<damo22>that is some crazy magic
<youpi>I mean attach it to emu
<youpi>it'll see the raw cpu status
<damo22>-s ?
<youpi>yes
<damo22>ok
<damo22>Thread 1 (Thread 1.1 (CPU#0 [running])):
<damo22>#0 ioapic_write (id=0 '\000', reg=39 '\'', value=0) at ../i386/i386at/ioapic.c:166
<damo22>#1 ioapic_write_entry (apic=0, pin=11, e=...) at ../i386/i386at/ioapic.c:187
<damo22>#2 ioapic_irq_eoi (pin=11) at ../i386/i386at/ioapic.c:312
<damo22>#3 0xc1058100 in interrupt () at ../i386/i386at/interrupt.S:102
<damo22>looks like irq11 is going nuts with lots of interrupts
<damo22>but the copy is not progressing
<damo22>Thread 1 (Thread 1.1 (CPU#0 [running])):
<damo22>#0 0xc1000640 in apic_send_ipi (dest_shorthand=0, deliv_mode=0, dest_mode=1, level=1, trig_mode=0, vector=250, dest_id=2) at ../i386/i386/apic.c:305
<damo22>#1 0xc10189b6 in smp_send_ipi (logical_id=logical_id@entry=2, vector=vector@entry=250) at ../i386/i386/smp.c:61
<damo22>#2 0xc10189d3 in smp_remote_ast (logical_id=2) at ../i386/i386/smp.c:68
<damo22>#3 0xc1053b5f in cause_ast_check (processor=0xc10a026c <percpu_array+620>) at ../i386/i386/ast_check.c:53
<damo22>#4 0xc1041abc in thread_setrun (th=0xf5be5d88, may_preempt=1) at ../kern/sched_prim.c:1307
<damo22>#5 0xc10422e5 in thread_wakeup_prim (event=<optimized out>, one_thread=0, result=0) at ../kern/sched_prim.c:431
<damo22>#6 0xc1053684 in queue_intr (dev=0xc1098240 <irqtab>, id=11, e=0xf640be88) at ../device/intr.c:118
<damo22>#7 deliver_user_intr (dev=0xc1098240 <irqtab>, id=11, e=0xf640be88) at ../device/intr.c:134
<damo22>#8 0xc1053710 in user_irq_handler (id=11) at ../device/intr.c:192
<damo22>#9 0xc105812e in interrupt () at ../i386/i386at/interrupt.S:120
<damo22>its just spinning doing irq11 and remote asts using 200% load
<damo22>if i renice the rumpnet process to 0 it completes an entire transfer more often
<youpi>it looks like irq11 doesn't get properly masked?
<youpi>I mean, it shouldn't re-trigger until the userland handler has processed it
<youpi>handlers*, even
<youpi>both rumpdisk and netdde
<youpi>rumpnet actually
<damo22> pin 11 0x000000000000c03b dest=0 vec=59 active-hi level fixed phys
<damo22>should i try stepping until eoi and then checking the mask on the apic pin?
<youpi>I don't know the details
<youpi>but checking that things happen the way you want, never hurts
<damo22>when is the irq supposed to be masked
<damo22>(07:54:36 PM) youpi: it looks like irq11 doesn't get properly masked? <<--- i think youre right, just before the eoi is done, the irq is still unmasked so could retrigger
<damo22>looks like we wrap the eoi in splhigh -> splx
<damo22>is that enough?
<damo22>or it could trigger a level interrupt before the eoi executes
<diegonc>task18(pid28972)->vm_map (0 5368709120 0 1 (null) 0 1 3 7 1) = 0 4314832896
<diegonc> 27<--40(pid28972)->io_write_request ("__vm_set_size_limit: 16\n" -1)__vm_set_size_limit: 16
<diegonc> = 0 24
<diegonc>this is weird, under rpctrace my setrlimit test program fails with KERN_INVALID_TASK when calling the set size limit
<diegonc>while without rpctrace it works ok
<diegonc>I'm just passing the result of __mach_task_self as the task port
<diegonc>also, I'd expect a task18(pid28972)->vm_set_size_limit line before the io_write_request
<diegonc>but for some reason it's not printed :/
<diegonc>the io_write_request is from a fprintf I added to the strlimit implementation
<diegonc>setrlimit*
<diegonc>like this:
<diegonc> err = __vm_set_size_limit (host, __mach_task_self (),
<diegonc> lim.rlim_cur, lim.rlim_max);
<diegonc> fprintf (stderr, "__vm_set_size_limit: %d\n", err);
<gnu_srs>Need some advise: gpg and gnupg conflicts with each other, which to keep?
<youpi>the most recent