Re: difference in SIGCHLD behavior between Linux and FreeBSD breaks apt

From: Matthew Macy <mmacy_at_nextbsd.org>
Date: Fri, 08 Jul 2016 00:52:38 -0700
 > Unsurprisingly I may have misinterpreted the trace. 
 >  
 > John observes: 
 > Alternatively, if apt is creating a pipe() that it passes to dpkg() via fork() and apt  
 > only creates the read end opened and dpkg only keeps the write end up opened, then when  
 > dpkg exits, the pipe_read should return EOF when dpkg exits (that is normally the way pipes  
 > are used to detect child exit rather than EINTR from SIGCLD).  
 >  
 > The SIGCHLD may be a red herring as strace will report it even if it is ignored. What John describes is borne out by the traces. 
 >  
 > FreeBSD from pipe creation to dpkg exit and apt hang 
 > http://pastebin.com/TGRrMniD 
 >  
 > Linux from pipe creation to dpkg exit and apt continue 
 > http://pastebin.com/wPfd31Pf 
 
It turns out that this was footshooting. In my changes to linprocfs the <pid>/fd directory was holding additional references to the struct file pointers which prevented apt from getting an EOF when dpkg exited.

Thanks to all who commented. 

FWIW, after fixing the previous issue and then linux_mremap to be able to grow a mapping apt works now:

root_at_planecrash:/home/mmacy # chroot /compat/linux/ apt-get update
Hit:1 http://archive.ubuntu.com/ubuntu xenial InRelease
Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB]
Hit:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease                     
Fetched 94.5 kB in 1s (56.3 kB/s)                                                   
Reading package lists... Done

I don't think this is all that useful until I update / implement any system calls to get steam / widevine whatever working, but in case anyone cares this is all going on in the drm-next-4.6 branch alongside the graphics work.

-M
Received on Fri Jul 08 2016 - 05:52:41 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:06 UTC