https://bugs.ruby-lang.org/https://bugs.ruby-lang.org/favicon.ico?17113305112010-01-08T14:02:31ZRuby Issue Tracking SystemBackport187 - Bug #2575: a test fail for IO#readpartial is broken on *BSDhttps://bugs.ruby-lang.org/issues/2575?journal_id=75722010-01-08T14:02:31Ztaca (Takahiro Kambe)taca@back-street.net
<ul></ul><p>=begin<br>
In message <a href="mailto:4b46a911c23d1_8c3bbe17ec398dd@redmine.ruby-lang.org" class="email">4b46a911c23d1_8c3bbe17ec398dd@redmine.ruby-lang.org</a><br>
on Fri, 8 Jan 2010 12:40:04 +0900,<br>
Takahiro Kambe <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a> wrote:</p>
<blockquote>
<p>解決策としては、fflush(3)の呼び出しに代えて__SOFFをアンセットしてから<br>
ftello(3)を呼び出すといったことが考えられます。取り敢えずのパッチで、<br>
問題が解決することを確認しました。<br>
この問題は解決しますが、解決しているのはオフセットだけで、<br>
read_buffered_data()辺りにはfread(3)呼び出してるコードも<br>
存在します。</p>
</blockquote>
<p>副作用もあるでしょうし、最終的にはRuby 1.9でstdio捨てると<br>
いう話に結び付くのでしょう。</p>
<p>--<br>
神戸 隆博(かんべ たかひろ) at 仕事場</p>
<p>=end</p> Backport187 - Bug #2575: a test fail for IO#readpartial is broken on *BSDhttps://bugs.ruby-lang.org/issues/2575?journal_id=76472010-01-12T15:18:05Ztaca (Takahiro Kambe)taca@back-street.net
<ul></ul><p>=begin<br>
<a href="https://blade.ruby-lang.org/ruby-dev/40051">[ruby-dev:40051]</a> に添付のパッチで現象が解決することを確認しました。<br>
根本的な原因は、Bug #1872で、timerスレッド関係か何かの関係で顕在化したと考えられます。</p>
<p>=end</p> Backport187 - Bug #2575: a test fail for IO#readpartial is broken on *BSDhttps://bugs.ruby-lang.org/issues/2575?journal_id=76502010-01-12T17:45:18Ztaca (Takahiro Kambe)taca@back-street.net
<ul></ul><p>=begin<br>
In message <a href="mailto:4b4c141dbb220_8bcf020a0844891@redmine.ruby-lang.org" class="email">4b4c141dbb220_8bcf020a0844891@redmine.ruby-lang.org</a><br>
on Tue, 12 Jan 2010 15:18:06 +0900,<br>
Takahiro Kambe <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a> wrote:</p>
<blockquote>
<p><a href="https://blade.ruby-lang.org/ruby-dev/40051">[ruby-dev:40051]</a> に添付のパッチで現象が解決することを確認しました。<br>
と、書きましたが、</p>
</blockquote>
<blockquote>
<p>根本的な原因は、Bug #1872で、timerスレッド関係か何かの関係で顕在化し<br>
たと考えられます。<br>
単純なバッククォートやsystem()の実行での問題は解消しましたが、やはり、</p>
</blockquote>
<pre><code>test_local_barrier(TC_Thread):
</code></pre>
<p>で刺さるときがあるようです。</p>
<p>--<br>
神戸 隆博(かんべ たかひろ) at 仕事場</p>
<p>P.S.<br>
刺さったプロセスを kill -KILL で終了させて、make test-all を終わらせた<br>
あとに、親なしとなったrubyのプロセスが10個くらい残り、parkedな状態<br>
(pthread_joinか何か)となってます。NetBSD current (5.99.22)自体も怪しい<br>
ところはあるので、取り敢えず 5.99.23 にしてから再確認する予定です。</p>
<p>=end</p> Backport187 - Bug #2575: a test fail for IO#readpartial is broken on *BSDhttps://bugs.ruby-lang.org/issues/2575?journal_id=76752010-01-14T11:45:45Ztaca (Takahiro Kambe)taca@back-street.net
<ul></ul><p>=begin<br>
申し訳ありませんが、redmineに登録された、</p>
<p><a href="https://blade.ruby-lang.org/ruby-dev/40055">[ruby-dev:40055]</a>によるコメント#2<br>
<a href="https://blade.ruby-lang.org/ruby-dev/40056">[ruby-dev:40056]</a>によるコメント#3)</p>
<p>については、IO#readpartialの問題とは無関係でした。</p>
<p>=end</p> Backport187 - Bug #2575: a test fail for IO#readpartial is broken on *BSDhttps://bugs.ruby-lang.org/issues/2575?journal_id=81552010-02-05T06:40:58Zhukl (John Bader)hukl@h3q.com
<ul></ul><p>=begin<br>
I have issues with that on FreeBSD. I ran unicorn and it delivered only partial responses. The maintainer fixed this with:</p>
<p>diff --git a/io.c b/io.c<br>
index 375cbc8..d4d28e5 100644<br>
--- a/io.c<br>
+++ b/io.c<br>
@@ -122,6 +122,9 @@ extern void Init_File _((void));</p>
<a name="endif"></a>
<h1 >endif<a href="#endif" class="wiki-anchor">¶</a></h1>
<p>#endif</p>
<p>+#define preserving_errno(stmts) \</p>
<ul>
<li>do {int saved_errno = errno; stmts; errno = saved_errno;} while (0)</li>
<li>
</ul>
<p>VALUE rb_cIO;<br>
VALUE rb_eEOFError;<br>
VALUE rb_eIOError;<br>
@@ -490,7 +493,7 @@ io_fwrite(str, fptr)<br>
r = write(fileno(f), RSTRING(str)->ptr+offset, l);<br>
TRAP_END;<br>
#if BSD_STDIO</p>
<ul>
<li>fseeko(f, lseek(fileno(f), (off_t)0, SEEK_CUR), SEEK_SET);</li>
</ul>
<ul>
<li>preserving_errno(fseeko(f, lseek(fileno(f), (off_t)0, SEEK_CUR), SEEK_SET));<br>
#endif<br>
if (r == n) return len;<br>
if (0 <= r) {</li>
</ul>
<hr>
<p>This resolved the issue for me. I applied the patch to the FreeBSD ruby18 port and reinstalled.<br>
=end</p> Backport187 - Bug #2575: a test fail for IO#readpartial is broken on *BSDhttps://bugs.ruby-lang.org/issues/2575?journal_id=81592010-02-05T17:21:35Ztaca (Takahiro Kambe)taca@back-street.net
<ul><li><strong>File</strong> <a href="/attachments/836">io.c.diff</a> <a class="icon-only icon-download" title="Download" href="/attachments/download/836/io.c.diff">io.c.diff</a> added</li></ul><p>=begin<br>
Hi John.</p>
<p>Dose your patch solve the partial read problem on FreeBSD without io.c.diff,<br>
or your patch provide additional fix?</p>
<p>Anyway, I rewrite slightly your patch and merged my updated fix to attached file.<br>
=end</p> Backport187 - Bug #2575: a test fail for IO#readpartial is broken on *BSDhttps://bugs.ruby-lang.org/issues/2575?journal_id=811362019-08-27T16:36:00Zjeremyevans0 (Jeremy Evans)merch-redmine@jeremyevans.net
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/81136/diff?detail_id=54784">diff</a>)</li><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li></ul>