CA-33440: add a single-threaded fork/exec daemon

Under stress testing occasionally xapi fork()s and fails to exec() because the 
subprojecess is spinning in a pthread_create, called from a pthread_atfork 
handler.

Since it's difficult to get fork()+threads right, we switch to a defensive 
model where a single-threaded process (started from init.d) fork()s on behalf 
of xapi.

An additional benefit is the addition of ocaml bindings for sending and 
receiving file descriptors over unix domain sockets.

28 files changed, 974 insertions(+), 136 deletions(-)
Makefile.in                        |   16 ++
forking_executioner/META.in        |    5 
forking_executioner/Makefile       |   78 +++++++++++++-
forking_executioner/child.ml       |  162 +++++++++++++++++++++++++++++
forking_executioner/fe_debug.ml    |   23 ++++
forking_executioner/fe_main.ml     |   89 ++++++++++++++++
forking_executioner/init.d-fe      |   99 ++++++++++++++++++
forking_executioner/test_forker.ml |   49 ++++++++
mk/Makefile                        |    2 
rebuild                            |    2 
scripts/Makefile                   |   13 ++
scripts/install.sh                 |    5 
stdext/META.in                     |    2 
stdext/Makefile                    |   25 +++-
stdext/fe.ml                       |   24 ++++
stdext/fecomms.ml                  |   43 +++++++
stdext/fecomms.mli                 |    8 +
stdext/forkhelpers.ml              |  197 ++++++++++++++++++++++++++----------
stdext/forkhelpers.mli             |   16 ++
stdext/gzip.ml                     |   16 +-
stdext/sha1sum.ml                  |   13 --
stdext/unixext.ml                  |   24 ----
stdext/unixext.mli                 |    4 
stdext/unixext_stubs.c             |  136 ++++++++++++++++++++++++
stunnel/META.in                    |    2 
stunnel/Makefile                   |    8 -
stunnel/stunnel.ml                 |   47 ++++----
stunnel/stunnel.mli                |    2 

_______________________________________________
xen-api mailing list
[email protected]
http://lists.xensource.com/mailman/listinfo/xen-api

Reply via email to