summaryrefslogtreecommitdiff
path: root/spec/ruby/fixtures/code
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2023-03-21 15:32:44 +0900
committernagachika <nagachika@ruby-lang.org>2023-03-21 15:32:44 +0900
commit26b3f0b6a9489860e1d312369d784495b080daa3 (patch)
treef29019fd31aa6947db4318a2b2e9d2c599c81729 /spec/ruby/fixtures/code
parent485e0e46a58ff1a28eecd63b804b3dbea4b95b98 (diff)
merge revision(s) 8ce2fb9bbbaea14737c84385b1573f743a30f773,3a0f6ce1d31eefd8af01b50f3632a64d64e8f8c1: [Backport #19415]
Only emit circular dependency warning for owned thread shields [Bug #19415] If multiple threads attemps to load the same file concurrently it's not a circular dependency issue. So we check that the existing ThreadShield is owner by the current fiber before warning about circular dependencies. --- internal/thread.h | 1 + load.c | 3 ++- spec/ruby/core/kernel/shared/require.rb | 11 +++++++++++ spec/ruby/fixtures/code/concurrent_require_fixture.rb | 4 ++++ test/ruby/test_require.rb | 3 --- thread.c | 11 +++++++++++ 6 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 spec/ruby/fixtures/code/concurrent_require_fixture.rb Use Thread.pass until thread.stop? to wait for thread to block [Bug #19415] It should be more reliable --- spec/ruby/fixtures/code/concurrent_require_fixture.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Diffstat (limited to 'spec/ruby/fixtures/code')
-rw-r--r--spec/ruby/fixtures/code/concurrent_require_fixture.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/spec/ruby/fixtures/code/concurrent_require_fixture.rb b/spec/ruby/fixtures/code/concurrent_require_fixture.rb
new file mode 100644
index 0000000000..d4ce734183
--- /dev/null
+++ b/spec/ruby/fixtures/code/concurrent_require_fixture.rb
@@ -0,0 +1,4 @@
+object = ScratchPad.recorded
+thread = Thread.new { object.require(__FILE__) }
+Thread.pass until thread.stop?
+ScratchPad.record(thread)