Bug #2718
DRb mixing up function return values between PIDs after fork()
| Status: | Assigned | Start date: | 02/07/2010 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 0% |
||
| Category: | lib | |||
| Target version: | - | |||
| ruby -v: | 1.9.1,1.8.7 |
Description
The precise details are in the attached test case, but the basic version goes as such: Child pid 1 calls method_a() but gets the return value of method_b() that was called from child pid 2. This only happens if the parent process makes any remote DRb calls before the fork. This issue showed up for me in 1.9.1 as well as 1.8.7 on x86, but not in x86_64.
History
Updated by Yusuke Endoh over 1 year ago
- Status changed from Open to Assigned
- Assignee set to Masatoshi Seki
Hi, Sorry for late response, but I cannot reproduce on both 1.8.7-p249 and 1.9.1-p378. I assign this issue to Masatoshi Seki, the maintainer for drb. Seki-san, could you check this issue? -- Yusuke Endoh <mame@tsg.ne.jp>
Updated by Sean Bradly over 1 year ago
I just verified that this shows up for me in Ruby 1.8.7-p249 as well as 1.9.1-p378. It does seem to reproduce a lot more readily in 1.8, however.
Note that you must run the test script with at least one argument (the arg can be anything) to trigger the problem. With 0 arguments it skips the bug to show the known good case.
--
(o.0) xi:~/code $ rvm list
rvm rubies
ruby-1.8.6-p383 [ i386 ]
ruby-1.8.7-p174 [ i386 ]
ruby-1.8.7-p249 [ i386 ]
=> ruby-1.9.1-p378 [ i386 ]
(o.0) xi:~/code $ ruby ~/Downloads/drb_test_case.rb FAIL
a exiting
a exiting
a exiting
a ok
b ok
b ok
A BAD RESULT ("BBBB")
a exitinga exiting
b exiting
b exiting
--Sean