Actions
Backport #7159
closedSIGSEGV when calling Random#rand after forking
Status:
Closed
Assignee:
Description
When Kernel#fork is called,
Ruby uninitializes the default random generator Random::DEFAULT
by setting the next field of the struct MT that provides its state to 0.
Kernel#rand correctly initializes this random generator by a seed
when it detects this.
However, Random#rand does not do this and therefore attempting to
call Random#rand in a newly forked child process results in a
segmentation fault, because a null pointer is being dereferenced.
This irb session illustrates the problem:
https://gist.github.com/3888930
Actions
Like0
Like0Like0