You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "James Peach (JIRA)" <ji...@apache.org> on 2017/11/03 17:02:00 UTC
[jira] [Commented] (MESOS-8170) Propagate exit status 127 for
errors after fork
[ https://issues.apache.org/jira/browse/MESOS-8170?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16237988#comment-16237988 ]
James Peach commented on MESOS-8170:
------------------------------------
/cc [~benjaminhindman] [~jieyu]
> Propagate exit status 127 for errors after fork
> -----------------------------------------------
>
> Key: MESOS-8170
> URL: https://issues.apache.org/jira/browse/MESOS-8170
> Project: Mesos
> Issue Type: Bug
> Components: libprocess
> Reporter: James Peach
>
> There's no consistent methodology in lib process or Mesos for propagating errors that happen between fork and exec. For [posix_spawn|http://pubs.opengroup.org/onlinepubs/009695399/functions/posix_spawn.html], the POSIX standard designated an exit code or 127 to identify this case. We should adopt the same convention.
> {quote}
> The 8 bits of child process exit status that are guaranteed by IEEE Std 1003.1-2001 to be accessible to the waiting parent process are insufficient to disambiguate a spawn error from any other kind of error that may be returned by an arbitrary process image. No other bits of the exit status are required to be visible in stat_val, so these macros could not be strictly implemented at the library level. Reserving an exit status of 127 for such spawn errors is consistent with the use of this value by system() and popen() to signal failures in these operations that occur after the function has returned but before a shell is able to execute. The exit status of 127 does not uniquely identify this class of error, nor does it provide any detailed information on the nature of the failure. Note that a kernel implementation of posix_spawn() or posix_spawnp() is permitted (and encouraged) to return any possible error as the function value, thus providing more detailed failure information to the parent process.
> Thus, no special macros are available to isolate asynchronous posix_spawn() or posix_spawnp() errors. Instead, errors detected by the posix_spawn() or posix_spawnp() operations in the context of the child process before the new process image executes are reported by setting the child's exit status to 127. The calling process may use the WIFEXITED and WEXITSTATUS macros on the stat_val stored by the wait() or waitpid() functions to detect spawn failures to the extent that other status values with which the child process image may exit (before the parent can conclusively determine that the child process image has begun execution) are distinct from exit status 127.
> {quote}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)