SIGSEGV when calling Random#rand after forking
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: