ruby-core

Mailing list archive

[#78633] ruby/spec needs help from CRuby committers — Benoit Daloze <eregontp@...>

Currently, ruby/spec is maintained mostly by individuals and enjoys the

13 messages 2016/12/13

[ruby-core:78464] [Ruby trunk Bug#12999] there still exist race conditions in require

From: shugo@...
Date: 2016-12-02 11:17:25 UTC
List: ruby-core #78464
Issue #12999 has been reported by Shugo Maeda.

----------------------------------------
Bug #12999: there still exist race conditions in require
https://bugs.ruby-lang.org/issues/12999

* Author: Shugo Maeda
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
TestRequire#test_require_with_loaded_features_pop fails by increasing the number of threads,
so it seems that there still exist race conditions in require.

```
lexington:ruby$ cat t/require_test.rb
require "tempfile"

Tempfile.create(%w'bug-7530- .rb') {|script|
  script.close
  PATH = script.path
  THREADS = 10
  ITERATIONS_PER_THREAD = 1000

  THREADS.times.map {
    Thread.new do
      ITERATIONS_PER_THREAD.times do
        require PATH
        $".delete_if {|p| Regexp.new(PATH) =~ p}
      end
    end
  }.each(&:join)
  p :ok
}
lexington:ruby$ ./ruby t/require_test.rb
/home/shugo/local/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': destroyed thread shield - 0x00557a99ff5a78 (ThreadError)
	from /home/shugo/local/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from t/require_test.rb:12:in `block (4 levels) in <main>'
	from t/require_test.rb:11:in `times'
	from t/require_test.rb:11:in `block (3 levels) in <main>'
lexington:ruby$ ./ruby t/require_test.rb
/home/shugo/local/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': Attempt to unlock a mutex which is locked by another thread (ThreadError)
	from /home/shugo/local/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from t/require_test.rb:12:in `block (4 levels) in <main>'
	from t/require_test.rb:11:in `times'
	from t/require_test.rb:11:in `block (3 levels) in <main>'
```




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next