Issue #10909 has been updated by Daniel Pittman.
Josh Cooper wrote: > > Working around these because a vendor reintroduced the bug briefly as part > > of a kernel update doesn't make that any wiser. > > Just to be clear, implementing this change wouldn't have prevented the hang > from occurring. It would occur anytime Puppet performed a blocking read with > it's listener thread blocked in accept, so pretty much all the time. That seems a radically different bug to the one found in 2.7.13, and reintroduced in the RedHat kernel, which was that select didn't work correctly for files on the proc virtual file system; the relationship with select and listen came about, as I understood it, because the Ruby C kernel would use select if, and only if, there were two active file handles - and that cropped up when listening on a network socket *and* reading files. > While reviewing this issue, Jacob said that facter shouldn't be calling > IO.readlines, etc, generally speaking, and so this is why I filed it. That seems odd, and it would have been very useful to include the rationale for that in this ticket. After all, if we are making design decisions like "don't use standard file I/O in Facter" then we need to tell folks what they must do instead, and work out how to enforce that standard. After all, if these methods shouldn't be used, having our users do so and break things is highly undesirable... ---------------------------------------- Bug #10909: Shell out when reading from /proc https://projects.puppetlabs.com/issues/10909 Author: Josh Cooper Status: Rejected Priority: Normal Assignee: Category: Target version: Keywords: Branch: Affected Facter version: There are many places in facter where it using ruby's IO.read or IO.readlines to read the contents of files in /proc. This is problematic, as it can cause ruby to block definitely. It is better to use: <pre> Facter::Util::Resolution.exec("/bin/cat #{uptime_file} 2>/dev/null") </pre> with an appropriate timeout. This issue was triggering https://support.puppetlabs.com/tickets/482 (though not the cause) -- 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.
