puppetlabs/puppet-win32-ruby — pull request #51 by Iristyle (2014-08-14 21:33:27+00:00)
Title: (PUP-2987) Patch win32-service for service hang

- Previously there were a number of conditions in the win32-service
gem that could create a deadlock situation by not signaling a manual
reset event. Without these events signaled, the call to Win32
StartServiceCtrlDispatcher will block forever, and the service will
never enter the STOPPED state from STOP_PENDING.
- This issue can be particularly problematic when attempting to
upgrade Puppet using the MSI, as the MSI attempts to stop the
puppet service prior to installing a new version. If it fails to
do so, the upgrade will prompt for a retry in interactive mode, or
will simply fail in unattended.
- This issue had been sporadically reported / observed in x86 code,
but appears to be more prevalent / reproducible in x64 code.

- This code has been merged into the win32-servie gem, but not yet
released:
https://github.com/djberg96/win32-service/pull/21
See included patch file for individual commit details.