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,91 ****
--- 82,100 ----
               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,111 ****
                          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)
  
! illumos                          April 9, 2016                         illumos
--- 113,121 ----
                          the calling process.
  
       ENODEV             Unable to allocate state for the file descriptor.
  
  SEE ALSO
!      poll(2), sigwait(2), port_create(3C), sigsetops(3C), sigwaitinfo(3C),
!      signal.h(3HEAD), epoll(5)
  
! illumos                           May 5, 2016                          illumos