Skip to content

Instantly share code, notes, and snippets.

@eregon
Created September 12, 2017 12:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eregon/36f15069d86fc98fe39ff490ab878e91 to your computer and use it in GitHub Desktop.
Save eregon/36f15069d86fc98fe39ff490ab878e91 to your computer and use it in GitHub Desktop.
ruby/spec errors when preventing writing to thread/fiber-local variables from another Thread
1)
Thread#thread_variable_get returns the value previously set by #[]= ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_get_spec.rb:17:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_get_spec.rb:17:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_get_spec.rb:3:in `<top (required)>'
2)
Thread#thread_variable_get returns a value private to self ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_get_spec.rb:22:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_get_spec.rb:22:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_get_spec.rb:3:in `<top (required)>'
3)
Thread#thread_variable_set returns the value set ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_set_spec.rb:13:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_set_spec.rb:13:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_set_spec.rb:3:in `<top (required)>'
4)
Thread#thread_variable_set sets a value that will be returned by #thread_variable_get ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_set_spec.rb:17:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_set_spec.rb:17:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_set_spec.rb:3:in `<top (required)>'
5)
Thread#thread_variable_set sets a value private to self ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_set_spec.rb:22:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_set_spec.rb:22:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_set_spec.rb:3:in `<top (required)>'
6)
ObjectSpace.each_object finds an object stored in a thread local ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/objectspace/each_object_spec.rb:134:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/objectspace/each_object_spec.rb:134:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/objectspace/each_object_spec.rb:4:in `<top (required)>'
7)
Thread#keys stores a local in another thread when in a fiber ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/keys_spec.rb:38:in `[]='
/home/eregon/code/ruby/spec/rubyspec/core/thread/keys_spec.rb:38:in `block (3 levels) in <top (required)>'
8)
Process.detach sets the :pid thread-local to the PID FAILED
Expected nil
to equal 6451
/home/eregon/code/ruby/spec/rubyspec/core/process/detach_spec.rb:35:in `block (3 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/process/detach_spec.rb:3:in `<top (required)>'
9)
Thread#thread_variable? returns false if the thread variables do not contain 'key' ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_spec.rb:13:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_spec.rb:13:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_spec.rb:3:in `<top (required)>'
10)
Thread#thread_variable? returns true if the thread variables contain 'key' ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_spec.rb:18:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_spec.rb:18:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variable_spec.rb:3:in `<top (required)>'
11)
Thread#thread_variables returns the keys of all the values set ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variables_spec.rb:13:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variables_spec.rb:13:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variables_spec.rb:3:in `<top (required)>'
12)
Thread#thread_variables sets a value private to self ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variables_spec.rb:20:in `thread_variable_set'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variables_spec.rb:20:in `block (2 levels) in <top (required)>'
/home/eregon/code/ruby/spec/rubyspec/core/thread/thread_variables_spec.rb:3:in `<top (required)>'
13)
Thread#[]= stores a local in another thread when in a fiber ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/element_set_spec.rb:46:in `[]='
/home/eregon/code/ruby/spec/rubyspec/core/thread/element_set_spec.rb:46:in `block (3 levels) in <top (required)>'
14)
Thread#key? stores a local in another thread when in a fiber ERROR
ThreadError: inter-thread access of TLS prohibited
/home/eregon/code/ruby/spec/rubyspec/core/thread/key_spec.rb:47:in `[]='
/home/eregon/code/ruby/spec/rubyspec/core/thread/key_spec.rb:47:in `block (3 levels) in <top (required)>'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment