Hello! Ludovic Courtès <ludovic.cour...@inria.fr> skribis:
> [ 121.282538] shepherd[1]: Service user-homes started. > [ 121.368316] ipmi_si IPI0001:00: Using irq 10 > [ 121.405790] ipmi_si IPI0001:00: IPMI message handler: Found new BMC > (man_id: 0x0002a2, prod_id: 0x0100, dev_id: 0x20) > [ 121.419871] shepherd[1]: Exception caught while starting #<<service> > 7f19889012a0>: (wrong-type-arg "port-filename" "Wrong type argument in > position ~A: ~S" (1 #<closed: file 7f1981887000>) (#<closed: file > 7f1981887000>)) > [ 121.420074] shepherd[1]: Service user-homes running with value #t. > [ 121.420218] shepherd[1]: Service networking failed to start. I’m seeing a similar exception in a Hurd VM running shepherd 0.10.3rc1: --8<---------------cut here---------------start------------->8--- Jan 3 23:13:22 localhost shepherd[1]: Exception caught while starting networking: (wrong-type-arg "port-filename" "Wrong type argument in position ~A: ~S" (1 #<closed: file 207e498>) (#<closed: file 207e498>)) Jan 3 23:13:22 localhost shepherd[1]: Service networking failed to start. --8<---------------cut here---------------end--------------->8--- It’s interesting because it suggests that the offending ‘port-filename’ call comes from ‘load’, not from the network-setup code being loaded (here, the /hurd/pfinet translator has been properly set up). Looking at the code in ‘boot-9.scm’, I *think* we end up calling ‘primitive-load’; ‘shepherd’ replaces it with its own (@ (shepherd support) primitive-load*). I managed to grab this backtrace: --8<---------------cut here---------------start------------->8--- Evaluating user expression (catch #t (lambda () (load "/gnu/store/64?")) # ?). starting '/gnu/store/gn8q7p790a9zdnlciyp1vlncpin366r0-hurd-v0.9.git20230216/hurd/pfinet "--ipv6" "/servers/socket/26" "--interface" "/dev/eth0" "--address" "10.0.2.15" "--netmask" "255.255.255.0" "--gateway" "10.0.2.2"' In ice-9/boot-9.scm: 142:2 7 (dynamic-wind #<procedure 20393a0 at ice-9/eval.scm:33?> ?) In shepherd/support.scm: 486:15 6 (_ #<closed: file 50a7e38>) In ice-9/read.scm: 859:19 5 (read _) In unknown file: 4 (port-filename #<closed: file 50a7e38>) In ice-9/boot-9.scm: 1685:16 3 (raise-exception _ #:continuable? _) 1780:13 2 (_ #<&compound-exception components: (#<&assertion-fail?>) In ice-9/eval.scm: 159:9 1 (_ #(#(#<module (#{ g171}#) 3cd25f0>) (# "port-fil?" ?))) In unknown file: 0 (make-stack #t) #t --8<---------------cut here---------------end--------------->8--- So it’s indeed ‘read’ as called from ‘primitive-load*’ that stumbles upon a closed port. It also happens when loading a file that simply suspends the current fiber via ‘sleep’ or similar, but only on the Hurd though. To be continued… Ludo’.