https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2010-06-13T07:45:13Z
Ruby Issue Tracking System
Ruby master - Bug #3433: Error that occurs by BasicSocket#sendmsg
https://bugs.ruby-lang.org/issues/3433?journal_id=11656
2010-06-13T07:45:13Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul></ul><p>=begin<br>
まつもと ゆきひろです</p>
<p>In message "Re: <a href="/issues/3433">[ruby-dev:41597]</a> [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Error that occurs by BasicSocket#sendmsg (Closed)" href="https://bugs.ruby-lang.org/issues/3433">#3433</a>] Error that occurs by BasicSocket#sendmsg"<br>
on Sun, 13 Jun 2010 03:06:34 +0900, Masaya Tarui <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a> writes:</p>
<p>|r24199と関連するのですが、sendmsgが実装されていない場合に発生するエラーとして、<br>
|こちらの環境ではNotImplementedErrorではなくErrno::ENOSYSが発生します。</p>
<p>CRubyでは、下のレイヤーがエラーを返せばそのまま返します。正直、<br>
sendmsgというシステムコールはあるが、呼ぶと必ずENOSYSを返す変<br>
なプラットフォームが存在した場合、それをドキュメントでカバー<br>
できるかというとかなり疑問です。</p>
<p>|ドキュメントにはエラーについて書いていないのですが、どちらが正解かまた両方ありえるのか、<br>
|どうなんでしょうか?<br>
|<br>
|これで、<br>
|test_udp_server(TestSocket)<br>
|test_sendmsg_nonblock_error(TestSocketNonblock)<br>
|がErrorになっています。</p>
<p>どうすべきなんでしょうね。</p>
<ul>
<li>mswin32ではsendmsgは非対応にする。ifdefで外す</li>
<li>ドキュメントにENOSYSを返すことがあると明記。テストもそれ<br>
にあわせて変更</li>
<li>sendmsgがENOSYSを返したらNotImplementedErrorを返すように</li>
</ul>
<p>どれもありえるとは思うのですが。</p>
<pre><code> まつもと ゆきひろ /:|)
</code></pre>
<p>=end</p>
Ruby master - Bug #3433: Error that occurs by BasicSocket#sendmsg
https://bugs.ruby-lang.org/issues/3433?journal_id=11660
2010-06-13T23:40:02Z
akr (Akira Tanaka)
akr@fsij.org
<ul></ul><p>=begin<br>
2010年6月13日3:06 Masaya Tarui <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a>:</p>
<blockquote>
<p>r24199と関連するのですが、sendmsgが実装されていない場合に発生するエラーとして、<br>
こちらの環境ではNotImplementedErrorではなくErrno::ENOSYSが発生します。</p>
</blockquote>
<p>Windows 上の ruby における sendmsg の実装をよく分かっていないのですが、<br>
コンパイルした環境から他の環境にバイナリをコピーすると動いたり動かなかったり<br>
することはあるでしょうか。</p>
<p>Unix では、カーネルがシステムコールをサポートしていれば動くし、<br>
サポートしていなければ動かない (ENOSYS) ので、そういうことがあり得ます。</p>
<p>もし Windows でもそうなら、少なくとも #ifdef でコンパイル時に挙動を<br>
決めてしまうのはよろしくないでしょう。</p>
<blockquote>
<p>ドキュメントにはエラーについて書いていないのですが、どちらが正解かまた両方ありえるのか、<br>
どうなんでしょうか?</p>
</blockquote>
<p>さて。</p>
<blockquote>
<p>これで、<br>
test_udp_server(TestSocket)<br>
test_sendmsg_nonblock_error(TestSocketNonblock)<br>
がErrorになっています。</p>
</blockquote>
<a name="テストで-rescue-する例外に-ErrnoENOSYS-を加えると解決しますか"></a>
<h2 >テストで rescue する例外に Errno::ENOSYS を加えると解決しますか?<a href="#テストで-rescue-する例外に-ErrnoENOSYS-を加えると解決しますか" class="wiki-anchor">¶</a></h2>
<p>[田中 哲][たなか あきら][Tanaka Akira]</p>
<p>=end</p>
Ruby master - Bug #3433: Error that occurs by BasicSocket#sendmsg
https://bugs.ruby-lang.org/issues/3433?journal_id=11661
2010-06-14T07:12:51Z
tarui (Masaya Tarui)
tarui@prx.jp
<ul></ul><p>=begin</p>
<blockquote>
<blockquote>
<p>これで、<br>
test_udp_server(TestSocket)<br>
test_sendmsg_nonblock_error(TestSocketNonblock)<br>
がErrorになっています。</p>
</blockquote>
<p>テストで rescue する例外に Errno::ENOSYS を加えると解決しますか?</p>
</blockquote>
<p>解決というと曖昧なのでYes/Noで答えられませんが、<br>
現象だけでいうとErrorのかわりにSkipになります。</p>
<p>--<br>
樽家昌也(Masaya TARUI)<br>
No Tool,No Life.</p>
<p>=end</p>
Ruby master - Bug #3433: Error that occurs by BasicSocket#sendmsg
https://bugs.ruby-lang.org/issues/3433?journal_id=11662
2010-06-14T09:55:13Z
usa (Usaku NAKAMURA)
usa@garbagecollect.jp
<ul></ul><p>=begin<br>
こんにちは、なかむら(う)です。</p>
<p>In message "<a href="https://blade.ruby-lang.org/ruby-dev/41602">[ruby-dev:41602]</a> Re: [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Error that occurs by BasicSocket#sendmsg (Closed)" href="https://bugs.ruby-lang.org/issues/3433">#3433</a>] Error that occurs by BasicSocket#sendmsg"<br>
on Jun.13,2010 23:39:48, <a href="mailto:akr@fsij.org" class="email">akr@fsij.org</a> wrote:</p>
<blockquote>
<blockquote>
<p>r24199と関連するのですが、sendmsgが実装されていない場合に発生するエラーとして、<br>
こちらの環境ではNotImplementedErrorではなくErrno::ENOSYSが発生します。</p>
</blockquote>
<p>Windows 上の ruby における sendmsg の実装をよく分かっていないのですが、<br>
コンパイルした環境から他の環境にバイナリをコピーすると動いたり動かなかったり<br>
することはあるでしょうか。</p>
</blockquote>
<p>はい。</p>
<blockquote>
<p>Unix では、カーネルがシステムコールをサポートしていれば動くし、<br>
サポートしていなければ動かない (ENOSYS) ので、そういうことがあり得ます。</p>
<p>もし Windows でもそうなら、少なくとも #ifdef でコンパイル時に挙動を<br>
決めてしまうのはよろしくないでしょう。</p>
</blockquote>
<p>完全に同意します。</p>
<blockquote>
<blockquote>
<p>ドキュメントにはエラーについて書いていないのですが、どちらが正解かまた両方ありえるのか、<br>
どうなんでしょうか?</p>
</blockquote>
<p>さて。</p>
<blockquote>
<p>これで、<br>
test_udp_server(TestSocket)<br>
test_sendmsg_nonblock_error(TestSocketNonblock)<br>
がErrorになっています。</p>
</blockquote>
<p>テストで rescue する例外に Errno::ENOSYS を加えると解決しますか?</p>
</blockquote>
<p>1.9.2に関してはそれでいいと思います。</p>
<p>将来的には、ENOSYSなんぞは外に見せないでNotImplementedErrorに<br>
変える方が親切なんじゃないかと思っているのですが、それはまた<br>
別の機会に。</p>
<a name="それでは"></a>
<h2 >それでは。<a href="#それでは" class="wiki-anchor">¶</a></h2>
<p>U.Nakamura <a href="mailto:usa@garbagecollect.jp" class="email">usa@garbagecollect.jp</a></p>
<p>=end</p>
Ruby master - Bug #3433: Error that occurs by BasicSocket#sendmsg
https://bugs.ruby-lang.org/issues/3433?journal_id=11676
2010-06-14T22:47:05Z
akr (Akira Tanaka)
akr@fsij.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>=begin<br>
This issue was solved with changeset r28320.<br>
Masaya, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<p>=end</p>