https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2012-08-24T03:48:43Z
Ruby Issue Tracking System
Ruby master - Bug #6911: Sync_m#sync_unlock で ThreadError が発生する場合がある
https://redmine.ruby-lang.org/issues/6911?journal_id=29013
2012-08-24T03:48:43Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul></ul><p>修正パッチがgistに見つけられないのはぼくだけ?</p>
Ruby master - Bug #6911: Sync_m#sync_unlock で ThreadError が発生する場合がある
https://redmine.ruby-lang.org/issues/6911?journal_id=29017
2012-08-24T15:40:26Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul></ul><p>わお、ごめんなさい。添付し忘れていたようです。更新しました。</p>
<p>以下にも貼ります。</p>
<p>diff --git a/lib/sync.rb b/lib/sync.rb<br>
index bae05a4..05864c2 100644<br>
--- a/lib/sync.rb<br>
+++ b/lib/sync.rb<br>
@@ -147,7 +147,7 @@ module Sync_m<br>
sync_upgrade_waiting.push [Thread.current, sync_sh_locker[Thread.current]]<br>
sync_sh_locker.delete(Thread.current)<br>
else</p>
<ul>
<li>
<pre><code> sync_waiting.push Thread.current
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> sync_waiting.push Thread.current unless sync_waiting.include? Thread.current
end
@sync_mutex.sleep
end
</code></pre>
</li>
</ul>
Ruby master - Bug #6911: Sync_m#sync_unlock で ThreadError が発生する場合がある
https://redmine.ruby-lang.org/issues/6911?journal_id=29041
2012-08-26T00:16:20Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul></ul><p>sync_unlock 内で th.wakeup した後に th.run していますが、th.run のときに既にスレッドが死んでいる場合があるようです。<br>
この状況にも対応できるようパッチを更新しました。</p>
Ruby master - Bug #6911: Sync_m#sync_unlock で ThreadError が発生する場合がある
https://redmine.ruby-lang.org/issues/6911?journal_id=29225
2012-09-09T20:28:10Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li></ul><p>調査した結果 5355と同じだと分かったのであっちのパッチいれます。ごめんね</p>
Ruby master - Bug #6911: Sync_m#sync_unlock で ThreadError が発生する場合がある
https://redmine.ruby-lang.org/issues/6911?journal_id=29226
2012-09-09T20:33:59Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul></ul><p>余談なんですけど、なんで Mutex.sleep を thread.run で起こせる仕様なんでしたっけ? Thread.stop, Thread.sleep 以外は起こせないほうが普通の感覚かと思うのですが。<br>
とはいえ、スレッドライブラリはTimeout moduleとかでexeptionが突然飛んできても大丈夫なように書いてあるべきなので、この制限をいれてもSync_mを直さないといけないという結論は変わらないのですが</p>