Previously, Graphene forgot to reset signal handlers to defaults.
This led to segfaults when parent process installed a signal handler
(e.g., SIGCHLD), spawned a child via execve(), and the child spawned
a grand-child via e.g. fork(). When the grand-child terminated, the
child noticed that it had some SIGCHLD handler installed and tried
to call it, but the memory region where the handler was in parent
didn't exist any more, so Graphene crashed with segfault. This
commit resets signal handlers on execve() to fix this bug. New LibOS
test is added.
Kudos to Manoj Gopalakrishnan for reporting this bug.