On 18/03/2026 09:42, Michael Kelly wrote:
On 17/03/2026 08:42, Samuel Thibault wrote:
And the mypy testsuite.
Samuel
mypy package is certainly a good example. It crashed my VM yesterday
running out of swap space although admittedly I have only 4GB of that
available. I'm going to run this same build on a Debian/Linux
similarly sized VM to see what memory resources are used on that OS
for comparison.
The build on Linux uses huge amounts of swap too. There's a compilation
early in the build whose process size grows to a virtual size of 6.5GB
using over 4G of swap. This reveals nothing except it is indeed a
resource hungry build so I'm ceasing this comparison.
I did succeed in getting the Hurd mypy build to lock up. This is perhaps
what Samuel is experiencing on the buildd? In my case, several of the
mach-defpager threads are stuck and the build stops. See kernel debugger
output appended. I think that thread 4 is blocked because the page is
'busy' but why it's busy, given that it's a real (not fictitious) page,
I don't know yet. Why is $map21 locked? I have this state preserved in a
VM snapshot but I've run out of time today to look further.
Do the buildd machines run up or up-dbg gnumach?
Cheers,
Mike.
db> show task $task21
TASK THREADS
21 (/hurd/mach-defpager(104)) (ffffffffdfc2b570): 6 threads:
0 (ffffffffdf9c7030) .W.O.FP(mach_msg_continue) 0
1 (ffffffffdf9f1d58) .W.O.F.(mach_msg_continue) 0
2 default_pager (ffffffffdfc2d250) .W..NFP 0xffffffffdfc27a18
3 default_pager (ffffffffdf9c78f0) .W..NFP 0xffffffffdfc27a18
4 default_pager (ffffffffdf9c76c0) .W..NFP 0xffffffffe391f5d0
5 default_pager (ffffffffdf9c7490) .W.O.FP(mach_msg_continue) 0
db> print $map21
ffffffffdfc27a18
db> show page 0xffffffffe391f5d0
Page 0xffffffffe391f5d0: object 0xffffffffb0f43af8, offset 0x0
wire_count 0, loose clean busy absent wanted,phys_addr = 0x1039ab000
, lock = 0x0, unlock_request = 0x0
db> show object 0xffffffffb0f43af8,
Object 0xffffffffb0f43af8: size=0x1000, 2 references
1 resident pages, 1 absent pages, 1 paging ops
memory object=0xffffffffb0bdf2f0
(offset=0x0),control=0xffffffffb0bdfb60, name=0xffffffffb0bdf0b0
ready created,temporary internal,copy_strategy=0
shadow=0x0 (offset=0x0),copy=0x0
wired: 0/1
memory:=(off=0x0,page=0xffffffffe391f5d0)
db> x vm_page_laundry_count
5
db> trace /tu $task21.2
switch_context(...)+0x101
thread_invoke(...)+0x107
thread_block(...)+0x5d
thread_sleep(...)+0x22
lock_write(...)+0x139
vm_map_lock(...)+0x11
vm_map_find_entry_anywhere(...)+0x268
vm_map_copyout(...)+0x71
ipc_kmsg_copyout_body(...)+0x70
ipc_kmsg_copyout(...)+0x51
mach_msg_continue(...)+0x9c
>>>>> user space <<<<<
0x0()
db> trace /tu $task21.3
switch_context(...)+0x101
thread_invoke(...)+0x107
thread_block(...)+0x5d
thread_sleep(...)+0x22
lock_write(...)+0xa2
vm_map_lock(...)+0x11
vm_map_find_entry_anywhere(...)+0x268
vm_map_copyout(...)+0x71
ipc_kmsg_copyout_body(...)+0x70
ipc_kmsg_copyout(...)+0x51
mach_msg_continue(...)+0x9c
>>>>> user space <<<<<
0x0()
db> trace /tu $task21.4
switch_context(...)+0x101
thread_invoke(...)+0x107
thread_block(...)+0x5d
vm_fault_page(...)+0x121b
vm_fault(...)+0x4e0
vm_fault_wire(...)+0x75
vm_map_pageable_scan(...)+0x154
vm_map_pageable(...)+0x141
vm_map_copyout(...)+0x457
ipc_kmsg_copyout_body(...)+0x70
ipc_kmsg_copyout(...)+0x51
mach_msg_continue(...)+0x9c
>>>>> user space <<<<<
0x0()