Issue #10667 has been reported by Stefan Kaes.

----------------------------------------
Bug #10667: thread_variable_set/get doesn't work for dynamically created symbols
https://bugs.ruby-lang.org/issues/10667

* Author: Stefan Kaes
* Status: Open
* Priority: Normal
* Assignee: 
* Category: core
* Target version: current: 2.2.0
* ruby -v: ruby 2.2.0p1 (2014-12-26 revision 49031) [x86_64-darwin13]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Adding the following test to thread_test.rb shows the problem:

~~~
def test_thread_variables_work_for_dynamically_created_symbols
    t = Thread.new {}.join
    key_str = "foo#{rand}"
    key_sym = key_str.to_sym
    t.thread_variable_set(key_sym, "bar")
    assert_equal "bar", t.thread_variable_get(key_str)
    assert_equal "bar", t.thread_variable_get(key_sym)
  end
~~~

Test output:

~~~
[15045/15894] TestThread#test_thread_variables_work_for_dynamically_created_symbols = 0.00        
  1) Failure:
TestThread#test_thread_variables_work_for_dynamically_created_symbols [/Users/stefan.kaes/src/ruby/test/ruby/test_thread.rb:94]:
<"bar"> expected but was
<nil>.
~~~



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