[CRIU] stray unix socket not dumped by the diag module?

Pavel Emelyanov xemul at virtuozzo.com
Thu Jul 14 04:00:32 PDT 2016


On 07/13/2016 05:53 PM, Tycho Andersen wrote:
> On Wed, Jul 13, 2016 at 04:53:53PM +0300, Pavel Emelyanov wrote:
>> On 07/13/2016 01:42 AM, Tycho Andersen wrote:
>>> Hi guys,
>>>
>>> I'm getting a,
>>>
>>> (00.155898) Error (sk-unix.c:294): sk unix: Unix socket 0x5674 not found
>>>
>>> very rarely when dumping containers. This looks to be some kind of
>>> unix socket that systemd has open, full log here:
>>>
>>> http://paste.ubuntu.com/19219914/
>>>
>>> but somehow, this socket didn't get dumped in collect_sockets(). I
>>> looked through the kernel code, but it's not obvious to me why a
>>> socket would be missing. Any ideas where to start digging?
>>
>> I guess it's the same issue as for TCP sockets -- only bind()-ed or auto-bound
>> sockets get into the list reported by the kernel.
> 
> I see, because they're not in the unix_socket_table I suppose. It
> looks like maybe we can get info on these sockets from the diag module
> by doing a specific request for them based on their inode number; is
> that the right approach?

Nope, the per-socket diag works on the same hash table :( We've met this
with TCP sockets already, see the gen_uncon_sk() function in criu/sk-inet.c,
I guess we need smth similar for unix sockets.

-- Pavel



More information about the CRIU mailing list