Hi, "pelzflorian (Florian Pelz)" <pelzflor...@pelzflorian.de> skribis:
> Desperately I tried also adding fsync, to no avail, both issues remain. > Non-working patch attached. > > Maybe dynamic-wind is an inappropriate pattern here? > > If I interrupt installation using Ctrl-C (which I normally don’t, > instead I unplug Ethernet), then I have to press Ctrl-C twice. Maybe > that could be related to why I need to resume twice? One finding: when hitting C-c, the dynamic-wind exit handler (the one that restores the database and umounts the cow store) is *not* executed. This is because ‘call-with-mnt-container’ sets a SIGINT handler that terminates that process with SIGKILL (I’m not entirely sure of the rationale, but said process cannot handle signals in Scheme while it’s in ‘waitpid’, called from ‘run-command’). I did reproduce the issue in a VM by running “ifconfig ens3 down” in a tty, or by killing the ‘guix substitute’ process, to cause failure of ‘guix system init’. In that case the database is indeed restored, but I occasionally get errors like “/gnu/store/….drv: No such file or directory”. Ludo’.