[lxc-devel] You are invited to give your thoughts on some async-signal-safety issues

Serge Hallyn serge.hallyn at ubuntu.com
Tue Sep 2 14:10:53 UTC 2014


Quoting Steven Stewart-Gallus (sstewartgallus00 at mylangara.bc.ca):
> Hello,
> 
> I understand that LXC uses sandboxing heavily. After taking a look at
> the source I don't think that LXC uses multithreading and that it

It doesn't much *use* them, but it very heavily supports their use
using the API.  Take a look at src/tests/concurrent.c and look
at the go bindings (https://github.com/lxc/go-lxc).

> tries to accomplish any multiprocessing needs by forking instead.

Yup, we insist that a task be single-threaded when it actually
starts a container.

I can see where for sandbox use by application a sandboxing
library might want to allow use by threads, and it'd be a very
interesting thing to work on, but that is not lxc's use case.

> However, the topic I am about to bring up may be relevant if LXC
> wishes to use multithreading in the future.  After a fork, many things
> are messed up so it's only practical to use async-signal-safe
> functions after a fork from a threaded program.  If you have ideas on

Basically we use at_fork to make sure that any locks which may
have been held (two main ones) by another thread are not held
(later deadlocking) in the new tasks.

> what sort of functionality GLibc needs to change to make required
> functionality more async-signal-safe after a fork from a multithreaded
> program you are invited to give your thoughts on the GLibc mailing
> list in the thread at
> https://sourceware.org/ml/libc-help/2014-08/msg00039.html.  I am not
> subscribed to lxc-devel so you may want to CC me.
> 
> Thank you,
> Steven Stewart-Gallus

Thanks, Stewart.  Note that about a month ago we had been pinged by
Carlos, who I assume you are also working with?  Eric pointed out
one issue here:

https://lists.linuxcontainers.org/pipermail/lxc-devel/2014-August/009921.html

thanks,
-serge


More information about the lxc-devel mailing list