unicorn Ruby/Rack server user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / code / Atom feed
* Kernel.srand after_fork
@ 2011-01-28  9:57 ghazel
  2011-01-28 10:26 ` Eric Wong
  0 siblings, 1 reply; 5+ messages in thread
From: ghazel @ 2011-01-28  9:57 UTC (permalink / raw)
  To: unicorn list

Hi,

We recently noticed random numbers from the Unicorn workers were
turning up lots of duplicates across requests. Is it possible that the
random seed generated when the ruby interpreter starts is duplicated
when the workers are forked, and not re-seeded after fork?

If so, should I call Kernel.srand in after_fork, or is this something
which should be added to Unicorn?

-Greg
_______________________________________________
Unicorn mailing list - mongrel-unicorn@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-unicorn
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Kernel.srand after_fork
  2011-01-28  9:57 Kernel.srand after_fork ghazel
@ 2011-01-28 10:26 ` Eric Wong
  2011-01-28 10:57   ` ghazel
  0 siblings, 1 reply; 5+ messages in thread
From: Eric Wong @ 2011-01-28 10:26 UTC (permalink / raw)
  To: unicorn list

ghazel@gmail.com wrote:
> Hi,
> 
> We recently noticed random numbers from the Unicorn workers were
> turning up lots of duplicates across requests. Is it possible that the
> random seed generated when the ruby interpreter starts is duplicated
> when the workers are forked, and not re-seeded after fork?
> 
> If so, should I call Kernel.srand in after_fork, or is this something
> which should be added to Unicorn?

It looks like a 1.8 bug, which version of Ruby are you running?  Ruby
1.9.1 actually had a bug where it was reseeded improperly and led to
segfaults (see KNOWN_ISSUES).  1.9.2 is fine afaik.

-- 
Eric Wong
_______________________________________________
Unicorn mailing list - mongrel-unicorn@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-unicorn
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Kernel.srand after_fork
  2011-01-28 10:26 ` Eric Wong
@ 2011-01-28 10:57   ` ghazel
  2011-01-28 17:51     ` Eric Wong
  0 siblings, 1 reply; 5+ messages in thread
From: ghazel @ 2011-01-28 10:57 UTC (permalink / raw)
  To: unicorn list

On Fri, Jan 28, 2011 at 2:26 AM, Eric Wong <normalperson@yhbt.net> wrote:
> ghazel@gmail.com wrote:
>> Hi,
>>
>> We recently noticed random numbers from the Unicorn workers were
>> turning up lots of duplicates across requests. Is it possible that the
>> random seed generated when the ruby interpreter starts is duplicated
>> when the workers are forked, and not re-seeded after fork?
>>
>> If so, should I call Kernel.srand in after_fork, or is this something
>> which should be added to Unicorn?
>
> It looks like a 1.8 bug, which version of Ruby are you running?  Ruby
> 1.9.1 actually had a bug where it was reseeded improperly and led to
> segfaults (see KNOWN_ISSUES).  1.9.2 is fine afaik.

REE 1.8.7

So, calling Kernel.srand in after_fork will fix the 1.8 bug and the
1.9.1 bug and work fine on 1.9.2?

-Greg
_______________________________________________
Unicorn mailing list - mongrel-unicorn@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-unicorn
Do not quote signatures (like this one) or top post when replying

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Kernel.srand after_fork
  2011-01-28 10:57   ` ghazel
@ 2011-01-28 17:51     ` Eric Wong
  2011-01-28 18:14       ` Eric Wong
  0 siblings, 1 reply; 5+ messages in thread
From: Eric Wong @ 2011-01-28 17:51 UTC (permalink / raw)
  To: unicorn list

ghazel@gmail.com wrote:
> So, calling Kernel.srand in after_fork will fix the 1.8 bug and the
> 1.9.1 bug and work fine on 1.9.2?

Yes.  The 1.9.1 bug is fixed in p429 AFAIK, but I seem to recall p429
being completely broken with gems.  Just use 1.9.2 if you're on 1.9

-- 
Eric Wong
_______________________________________________
Unicorn mailing list - mongrel-unicorn@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-unicorn
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Kernel.srand after_fork
  2011-01-28 17:51     ` Eric Wong
@ 2011-01-28 18:14       ` Eric Wong
  0 siblings, 0 replies; 5+ messages in thread
From: Eric Wong @ 2011-01-28 18:14 UTC (permalink / raw)
  To: unicorn list

Eric Wong <normalperson@yhbt.net> wrote:
> ghazel@gmail.com wrote:
> > So, calling Kernel.srand in after_fork will fix the 1.8 bug and the
> > 1.9.1 bug and work fine on 1.9.2?

Just reported the bug to ruby-core and pushed this out:

>From f4caf6b6bdea902abaadd3c04b2af94f056c4ff1 Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson@yhbt.net>
Date: Fri, 28 Jan 2011 18:11:26 +0000
Subject: [PATCH] KNOWN_ISSUES: document broken RNG+fork in newer Ruby 1.8

Reported by: ghazel@gmail.com

ref: <AANLkTimTpPATTpkoD2EYA2eM1+5OzCN=WxnCygQmJdhn@mail.gmail.com>
---
 KNOWN_ISSUES |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/KNOWN_ISSUES b/KNOWN_ISSUES
index f218b83..259681d 100644
--- a/KNOWN_ISSUES
+++ b/KNOWN_ISSUES
@@ -3,6 +3,11 @@
 Occasionally odd {issues}[link:ISSUES.html] arise without a transparent or
 acceptable solution.  Those issues are documented here.
 
+* Under some versions of Ruby 1.8, it is necessary to call +srand+ in an
+  after_fork hook to get correct random number generation.
+
+  See http://redmine.ruby-lang.org/issues/show/4338
+
 * For notes on sandboxing tools such as Bundler or Isolate,
   see the {Sandbox}[link:Sandbox.html] page.
 
-- 
Eric Wong
_______________________________________________
Unicorn mailing list - mongrel-unicorn@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-unicorn
Do not quote signatures (like this one) or top post when replying


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-01-28 18:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-28  9:57 Kernel.srand after_fork ghazel
2011-01-28 10:26 ` Eric Wong
2011-01-28 10:57   ` ghazel
2011-01-28 17:51     ` Eric Wong
2011-01-28 18:14       ` Eric Wong

Code repositories for project(s) associated with this public inbox

	https://yhbt.net/unicorn.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).