VirtualBox

Changeset 75726 in vbox


Ignore:
Timestamp:
Nov 25, 2018 8:12:28 PM (6 years ago)
Author:
vboxsync
Message:

VBoxService: Added SIGCHLD to sigwait() call to make darwin (10.9.5) work. Got woken up with the first set signal in signalMask otherwise, causing the daemon to quit. (Only happens with --only-control and after blocking SIGCHLD while doing HGCM message getting from the host.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxService/VBoxService.cpp

    r75721 r75726  
    844844     * The annoying EINTR/ERESTART loop is for the benefit of Solaris where
    845845     * sigwait returns when we receive a SIGCHLD.  Kind of makes sense since
     846     * the signal has to be delivered...  Anyway, darwin (10.9.5) has a much
     847     * worse way of dealing with SIGCHLD, apparently it'll just return any
     848     * of the signals we're waiting on when SIGCHLD becomes pending on this
     849     * thread. So, we wait for SIGCHLD here and ignores it.
    846850     */
    847851    sigset_t signalMask;
     
    852856    sigaddset(&signalMask, SIGABRT);
    853857    sigaddset(&signalMask, SIGTERM);
     858    sigaddset(&signalMask, SIGCHLD);
    854859    pthread_sigmask(SIG_BLOCK, &signalMask, NULL);
    855860
     
    864869           || rc == ERESTART
    865870# endif
     871           || iSignal == SIGCHLD
    866872          );
    867873
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette