Issue #4681 has been reported by Fredrik Eriksson.
----------------------------------------
Bug #4681: Puppet 2.6.1.r2 randomly hangs on Exec in FreeBSD
http://projects.puppetlabs.com/issues/4681
Author: Fredrik Eriksson
Status: Unreviewed
Priority: Normal
Assignee:
Category: FreeBSD
Target version:
Affected version:
Keywords:
Branch:
relevant info from pkg_info:
* ruby-1.8.7.248_3,1 (compiled with debug)
* puppet-2.6.1.r2
* facter-1.5.7_1
<pre>
uname -a
FreeBSD localhost 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Wed Jul 28 11:44:21 UTC
2010 r...@localhost:/usr/obj/usr/src/sys/GENERIC amd64
</pre>
I did also see this problem in FreeBSD 8.0 and puppet 0.25. Puppet does not
hang every time it's run, only on random Exec statements. When debugging this I
simply created an endless loop which ran the puppet configuration until it
hang. Sometimes it would only run a few times before it hang and sometimes it
run for hours. The manifest is quite big, but contains some sensitive stuff so
I can't upload it here, but this is probably reproducable with any manifest
that uses a great deal of Exec statements.
A few examples of output when it hang with command 'ruby18 --debug
/usr/local/bin/puppet agent --test --debug --trace':
<pre>
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1881: warning: instance
variable @virtual not initialized
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1881: warning: instance
variable @virtual not initialized
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1881: warning: instance
variable @virtual not initialized
debug: /Stage[main]/Webbase::Backup/Line[sudo_backup]/Exec[echo 'backup ALL= (
root ) NOPASSWD: /usr/sbin/backup' >> '/usr/local/etc/sudoers']: Executing
check '/usr/bin/grep -qFx 'backup ALL= ( root ) NOPASSWD:
/usr/sbin/backup' '/usr/local/etc/sudoers''
debug: Executing '/usr/bin/grep -qFx 'backup ALL= ( root ) NOPASSWD:
/usr/sbin/backup' '/usr/local/etc/sudoers''
removing /tmp/puppet20100901-36732-16mgs1p-0...done
[here puppet hangs]
</pre>
<pre>
debug: /Stage[main]/Webbase::Apache/Exec[apache_purge]: Executing check
'/bin/test -e /usr/local/etc/apache/ssl.crt'
debug: Executing '/bin/test -e /usr/local/etc/apache/ssl.crt'
removing /tmp/puppet20100901-50535-1p6j13j-0...done
[here puppet hangs]
</pre>
<pre>
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1881: warning: instance
variable @virtual not initialized
debug: /Stage[main]/Webbase::Nas/Exec[/sbin/mount /proc]: Executing check
'/sbin/mount | /usr/bin/egrep ^procfs'
debug: Executing '/sbin/mount | /usr/bin/egrep ^procfs'
removing /tmp/puppet20100901-95974-1n5jg13-0...done
[here puppet hangs]
</pre>
Since I have very little experience debugging stuff, and no previous experience
with ruby I just hacked in a few debug statements in type/exec.rb, and the
relevant code appears to be this code from the run function:
<pre>
withenv environment do
Timeout::timeout(self[:timeout]) do
output, status = Puppet::Util::SUIDManager.run_and_capture(
[command], self[:user], self[:group]
)
Puppet.debug "returned from run_and_capture #{self[:timeout]}"
end
Puppet.debug "timeout ended"
# The shell returns 127 if the command is missing.
if status.exitstatus == 127
Puppet.debug "argument error"
raise ArgumentError, output
end
Puppet.debug "no argument error"
end
</pre>
When puppet hangs it is after
<pre>Puppet.debug "returned from run_and_capture #{self[:timeout]}"</pre>
but before
<pre>Puppet.debug "timeout ended"</pre>
Since I don't really have time to figure out how the timeout -> do -> end thing
works I'll just file this bug here so hopefully someone can say if this is a
bug in puppet or an upstream bug in ruby. Let me know if you need any more info.
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://projects.puppetlabs.com/my/account
--
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-bugs?hl=en.