# File lib/phusion_passenger/utils.rb, line 461
        def safe_fork(current_location = self.class, double_fork = false)
                pid = fork
                if pid.nil?
                        has_exception = false
                        begin
                                if double_fork
                                        pid2 = fork
                                        if pid2.nil?
                                                srand
                                                yield
                                        end
                                else
                                        srand
                                        yield
                                end
                        rescue Exception => e
                                has_exception = true
                                print_exception(current_location.to_s, e)
                        ensure
                                exit!(has_exception ? 1 : 0)
                        end
                else
                        if double_fork
                                Process.waitpid(pid) rescue nil
                                return pid
                        else
                                return pid
                        end
                end
        end