Installing the patched version of memory.rb from https://github.com/puppetlabs/facter/commit/9ff4453b2f0843df887ae1ec2098a4336291df0c helped reduce the number of puppet hangs that we experience, but we were still getting hung processes. Attaching strace to a "hung" puppet process showed a constant output of the following lines repeated:
It turns out that puppet isn't actually hung, but is waiting forever for the futex() call to stop timing out.
Once I copied in the patched processor.rb from the same git changeset linked above, the hang problem stopped occurring for us. So from my perspective, both memory.pp and processor.rb need to be patched in the puppet 1.6.5 (precise) package.
Installing the patched version of memory.rb from https:/ /github. com/puppetlabs/ facter/ commit/ 9ff4453b2f0843d f887ae1ec2098a4 336291df0c helped reduce the number of puppet hangs that we experience, but we were still getting hung processes. Attaching strace to a "hung" puppet process showed a constant output of the following lines repeated:
31024 futex(0x7f96be6 ed5b0, FUTEX_WAKE_PRIVATE, 1) = 0 ed584, FUTEX_WAIT_ BITSET_ PRIVATE| FUTEX_CLOCK_ REALTIME, 231453, {1371588406, 113327589}, ffffffff) = -1 ETIMEDOUT (Connection timed out) CLOCK_REALTIME, {1371588406, 113578908}) = 0 ed5b0, FUTEX_WAKE_PRIVATE, 1) = 0 ed584, FUTEX_WAIT_ BITSET_ PRIVATE| FUTEX_CLOCK_ REALTIME, 231455, {1371588406, 123578908}, ffffffff) = -1 ETIMEDOUT (Connection timed out) CLOCK_REALTIME, {1371588406, 123789011}) = 0
31024 futex(0x7f96be6
31024 clock_gettime(
31024 futex(0x7f96be6
31024 futex(0x7f96be6
31024 clock_gettime(
It turns out that puppet isn't actually hung, but is waiting forever for the futex() call to stop timing out.
Once I copied in the patched processor.rb from the same git changeset linked above, the hang problem stopped occurring for us. So from my perspective, both memory.pp and processor.rb need to be patched in the puppet 1.6.5 (precise) package.