[#4076] Ruby/DL — Jamis Buck <jamis_buck@...>

I recently used Ruby/DL to create bindings to the SQLite3 embedded

40 messages 2005/01/03
[#4096] Re: Ruby/DL — Paul Brannan <pbrannan@...> 2005/01/04

On Tue, Jan 04, 2005 at 02:53:49AM +0900, Jamis Buck wrote:

[#4099] Re: Ruby/DL — ts <decoux@...> 2005/01/04

>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:

[#4119] Re: Ruby/DL — Paul Brannan <pbrannan@...> 2005/01/05

On Wed, Jan 05, 2005 at 03:05:48AM +0900, ts wrote:

[#4120] Re: Ruby/DL — ts <decoux@...> 2005/01/05

>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:

[#4125] Re: Ruby/DL — Paul Brannan <pbrannan@...> 2005/01/05

On Thu, Jan 06, 2005 at 01:10:34AM +0900, ts wrote:

[#4116] Test::Unit::Collector::Dir won't work with code that modifies $LOAD_PATH — Eric Hodel <drbrain@...7.net>

Any test code that depends upon modifications of $: fails when used

10 messages 2005/01/05

[#4146] The face of Unicode support in the future — Charles O Nutter <headius@...>

Hello Rubyists!

47 messages 2005/01/06
[#4152] Re: The face of Unicode support in the future — Yukihiro Matsumoto <matz@...> 2005/01/07

Hi,

[#4167] Re: The face of Unicode support in the future — Christian Neukirchen <chneukirchen@...> 2005/01/09

Yukihiro Matsumoto <matz@ruby-lang.org> writes:

[#4175] Re: The face of Unicode support in the future — Yukihiro Matsumoto <matz@...> 2005/01/10

Hi,

[#4186] Re: The face of Unicode support in the future — Paul Brannan <pbrannan@...> 2005/01/11

On Mon, Jan 10, 2005 at 11:53:48PM +0900, Yukihiro Matsumoto wrote:

[#4192] Re: The face of Unicode support in the future — Yukihiro Matsumoto <matz@...> 2005/01/12

Hi,

[#4269] Re: The face of Unicode support in the future — Wes Nakamura <wknaka@...>

19 messages 2005/01/18
[#4270] Re: The face of Unicode support in the future — Yukihiro Matsumoto <matz@...> 2005/01/18

Hi,

[#4275] Re: The face of Unicode support in the future — Wes Nakamura <wknaka@...> 2005/01/19

[#4323] test/unit doesn't rescue a Exception — Tanaka Akira <akr@...17n.org>

test/unit doesn't rescue a Exception in a test method, as follows.

14 messages 2005/01/27
[#8773] Re: test/unit doesn't rescue a Exception — Tanaka Akira <akr@...> 2006/09/02

In article <87is5jb46q.fsf@serein.a02.aist.go.jp>,

[#8776] Re: test/unit doesn't rescue a Exception — "Nathaniel Talbott" <ntalbott@...> 2006/09/03

On 9/1/06, Tanaka Akira <akr@fsij.org> wrote:

[#8777] Re: test/unit doesn't rescue a Exception — Eric Hodel <drbrain@...7.net> 2006/09/03

On Sep 2, 2006, at 6:34 PM, Nathaniel Talbott wrote:

Thread misbehavior

From: Brent Roman <brent@...>
Date: 2005-01-16 07:06:08 UTC
List: ruby-core #4249
Follow Rubyists:

This short demo illustrates some very odd threading behavior in
Ruby 1.6 and 1.8:

---
trap ('INT') {
   puts "Trapped SIGINT:  Critical=#{Thread.critical}"
}

busy1=Thread.new {
   loop {1000000.times {};
   puts "busy loop #1, Critical=#{Thread.critical}"}
}
busy2=Thread.new {
   loop {1000000.times {};
   puts "busy loop #2, Critical=#{Thread.critical}"}
}

sleep 5
Thread.critical=true
Thread.pass  #next scheduled thread becomes critical
   #in general, which thread goes critical will be hard to predict!
   #This is why Thread.pass should reset the Thread.critical flag
   #as Thread.stop does.

puts "Signal just interrupted critical section!!!"
puts "MAIN Thread:  Critical=#{Thread.critical}"
---

Run the demo.
Observe that, after five seconds, only busy loop #2 runs
and that it has become the critical thread even though it
never set Thread.critical!

This is due to the fact that Thread.pass does not clear Thread.critical
before it invoked the thread scheduler.  I believe it should.

Now send the process a SIGKILL (control-C usually does this)
Note that the Thread.critical is cleared and the main thread
resumes.

On the surface, clearing Thread.critical before handling a signal
may seem like a good idea.  However, given this behavior,
I can find no way to write a multi-threaded program in Ruby that
also handles traps safely.  If a trap can interrupt a critical
section, then any data protected by that section is likely corrupt
after the trap.

Please prove me wrong.

If no one can, then would it not be prudent to at least consider the 
patch I submitted on December 28th in ruby-core:4039?

- brent


In This Thread