Print this page
OS-5370 panic in signalfd (fix mancheck)
OS-5370 panic in signalfd
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

@@ -82,10 +82,19 @@
              uint64_t ssi_stime;     /* system CPU time consumed (SIGCHLD) */
              uint64_t ssi_addr;      /* address that generated signal */
              uint8_t  ssi_pad[48];   /* pad size to 128 bytes */
      } signalfd_siginfo_t;
 
+NOTES
+     File descriptor duplication during fork presents a challenge to the
+     signalfd facility since signal data and events are dependent on the
+     process from which they are queried.  Its use with caching event systems
+     such as epoll(5), /dev/poll, or port_create(3C) can result in undefined
+     behavior if signalfd and polling descriptors are used together after
+     being shared across a fork.  Such restrictions do not apply if the child
+     only calls close(2) on the descriptors.
+
 RETURN VALUES
      Upon successful completion, a file descriptor associated with the
      instance is returned. Otherwise, -1 is returned and errno is set to
      indicate the error.  When fd is not -1 and there is no error, the value
      of fd is returned.

@@ -104,8 +113,9 @@
                         the calling process.
 
      ENODEV             Unable to allocate state for the file descriptor.
 
 SEE ALSO
-     poll(2), sigwait(2), sigsetops(3C), sigwaitinfo(3C), signal.h(3HEAD)
+     poll(2), sigwait(2), port_create(3C), sigsetops(3C), sigwaitinfo(3C),
+     signal.h(3HEAD), epoll(5)
 
-illumos                          April 9, 2016                         illumos
+illumos                           May 5, 2016                          illumos