[#43467] [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...>

kosakiです

15 messages 2011/05/08
[#43482] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — SASADA Koichi <ko1@...> 2011/05/08

 ささだです.

[#43486] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/09

>  ささだです.

[#43487] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — SASADA Koichi <ko1@...> 2011/05/09

 ささだです.

[#43488] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/09

>  ささだです.

[#43489] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/09

自己解決しました

[#43500] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — SASADA Koichi <ko1@...> 2011/05/09

 ささだです.

[#43501] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/09

>> ということは危ないのは RUBY_VM_SET_INTERRUPT() がロストしたときに、タイムアウトなしの

[#43468] Re: [ruby-changes:19438] Ruby:r31478 (trunk): * test/date/*.rb: use skip /w messages. — KOSAKI Motohiro <kosaki.motohiro@...>

2011/5/8 tadf <ko1@atdot.net>:

8 messages 2011/05/08

[#43476] [Ruby 1.9 - Feature #4653][Open] [PATCH 1/1] new method Enumerable#rude_map — Shyouhei Urabe <shyouhei@...>

16 messages 2011/05/08

[#43493] [Ruby 1.9 - Feature #4657][Open] add option to hide skip messages on unit/test — Shota Fukumori <sorah@...>

11 messages 2011/05/09

[#43502] draft schedule of Ruby 1.9.3 — "Yuki Sonoda (Yugui)" <yugui@...>

-----BEGIN PGP SIGNED MESSAGE-----

23 messages 2011/05/09
[#43505] Re: draft schedule of Ruby 1.9.3 — "U.Nakamura" <usa@...> 2011/05/10

Hello,

[#43513] Re: draft schedule of Ruby 1.9.3 — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/10

(ruby-coreはずしました)

[#43587] [Ruby 1.9 - Feature #4788][Open] resolv.rb refactoring — Makoto Kishimoto <redmine@...>

15 messages 2011/05/27

[ruby-dev:43579] [Backport87 - Backport #4230][Closed] PlatformSDKのヘッダでビルドするとSocket::getaddrinfoで例外

From: Shyouhei Urabe <shyouhei@...>
Date: 2011-05-25 05:15:01 UTC
List: ruby-dev #43579
Issue #4230 has been updated by Shyouhei Urabe.

Status changed from Assigned to Closed

バックポートしました。
----------------------------------------
Backport #4230: PlatformSDKのヘッダでビルドするとSocket::getaddrinfoで例外
http://redmine.ruby-lang.org/issues/4230

Author: Masahiro Kitajima
Status: Closed
Priority: Normal
Assignee: Shyouhei Urabe
Category: 
Target version: 
ruby -v: ruby -v:ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]


=begin
  以前からVC++6.0対応の最後の Platform SDK である「Microsoft Platform SDK February 2003」を使ってビルドしていました。
  ruby-1.8.7-p330から ext/socket/extconf.rb が変わった事で、getaddrinfo()、getnameinfo() に、エミュレーション・コード(getaddrinfo.c、getnameinfo.c)の代わりに Windows API が使われるようになりました。
  これにより、以下のコードの address に nil や "localhost" を与えた時に例外が上がるようになりました。
 
 ---- ここから ----
 require 'socket'
 port = 80
 address = "localhost"
 p Socket::getaddrinfo(address, port,
                       Socket::AF_UNSPEC,   # address family
                       Socket::SOCK_STREAM, # socket type
                       0,                   # protocol
                       Socket::AI_PASSIVE)  # flag
 #=>
 test.rb:4:in `getaddrinfo': getnameinfo: 呼び出しでポインタ引数を使用するときに、無効なポインタ アドレスを検出しました。  (SocketError)
         from test.rb:4
 
 # ruby-1.8.7-p302 =>
 [["AF_INET", 80, "localhost", "127.0.0.1", 2, 1, 6]]
 ---- ここまで ----
 
  このテスト・コードは WEBrick::Utils#create_listeners に書かれているものです。WEBrick 利用のアプリケーション(gem server など)が動かなくなって気付きました。
  なお、VC++6.0 のヘッダでビルドした時は getaddrinfo.c、getnameinfo.c が使われるため、上記現象は起きません。
 
  ext/socket/extconf.rb を以下のようにすると、Platform SDK のヘッダでビルドした時の getnameinfo() API 呼び出しの矛盾がなくなり、上記現象が解消します。また結果として IPv6 対応になります。
  また VC++6.0 のヘッダでビルドした時は、従来どおり getaddrinfo.c、getnameinfo.c が使われます。
 
 ---- ここから ----
 --- extconf.rb.org      Wed Nov 24 18:37:06 2010
 +++ extconf.rb  Tue Jan 04 20:27:24 2011
 @@ -43,4 +43,5 @@
    if checking_for("ipv6") {try_link(<<EOF)}
 -#include <sys/types.h>
 -#include <sys/socket.h>
 +#{(RUBY_PLATFORM =~ /mswin32/) ?
 + "#include <winsock2.h>\n#include <ws2tcpip.h>" :
 + "#include <sys/types.h>\n#include <sys/socket.h>"}
  int
 @@ -48,2 +49,3 @@
  {
 +  struct in6_addr dummy;
    socket(AF_INET6, SOCK_STREAM, 0);
 ---- ここまで ----
=end



-- 
http://redmine.ruby-lang.org

In This Thread

Prev Next