< :前の番号
^ :番号順リスト
> :次の番号
P :前の記事(スレッド移動)
N :次の記事
|<:前のスレッド
>|:次のスレッド
^ :返事先
_:自分への返事
>:同じ返事先を持つ記事(前)
<:同じ返事先を持つ記事(後)
---:分割してスレッド表示、再表示
| :分割して(縦)スレッド表示、再表示
~ :スレッドのフレーム消去
.:インデックス
..:インデックスのインデックス
Issue #9365 has been updated by Geoffrey Giesemann.
Any love?
----------------------------------------
Bug #9365: Sporadic TypeError (wrong argument type Thread (expected VM/thread)) from IO#close (via Net:HTTP)
https://bugs.ruby-lang.org/issues/9365#change-44642
* Author: Geoffrey Giesemann
* Status: Open
* Priority: Normal
* Assignee:
* Category:
* Target version:
* ruby -v: ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]
* Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
I'm seeing the occasional error being thrown from Net:HTTP from a Rails app running under unicorn:
TypeError (wrong argument type Thread (expected VM/thread))
The two difference stack traces I see point back to IO#close:
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/protocol.rb: 88:in `close'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/protocol.rb: 88:in `close'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb: 946:in `do_finish'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb: 854:in `ensure in start'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb: 854:in `start'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:1367:in `request'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:1390:in `send_entity'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:1179:in `post'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/protocol.rb: 88:in `close'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/protocol.rb: 88:in `close'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb: 946:in `do_finish'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb: 854:in `start'
/opt/rubies/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb: 582:in `start'
Flipping through the source, I can see that we're calling the following under the hood:
void
rb_thread_fd_close(int fd)
{
st_foreach(GET_THREAD()->vm->living_threads, thread_fd_close_i, (st_index_t)fd);
}
thread_fd_close_i is unpacking a thread out of GET_THREAD()->vm->living_threads but is expected a Thread and not a VM/Thread.
These errors only seem to occur sporadically (78 in the past 30 days) and seem to happen during quiet times. The only other place I've been able to find this mentioned is on the Twitters [1]
I'd like to dig further, but I'm a bit out of my depth at debugging ruby runtimes.
HALP
[1] - https://twitter.com/Sutto/status/332103402681151489
--
http://bugs.ruby-lang.org/