[#23457] [Bug #1471] "Mutual join" deadlock detection faulty in 1.8.6 and 1.8.7 — John Carter <redmine@...>

Bug #1471: "Mutual join" deadlock detection faulty in 1.8.6 and 1.8.7

17 messages 2009/05/15

[#23483] [Bug #1478] Ruby archive — Oleg Puchinin <redmine@...>

Bug #1478: Ruby archive

29 messages 2009/05/16
[#29225] [Feature #1478] Ruby archive — Luis Lavena <redmine@...> 2010/04/02

Issue #1478 has been updated by Luis Lavena.

[#30345] Re: [Feature #1478] Ruby archive — "NAKAMURA, Hiroshi" <nakahiro@...> 2010/05/21

On Fri, Apr 2, 2010 at 17:13, Luis Lavena <redmine@ruby-lang.org> wrote:

[#30346] Re: [Feature #1478] Ruby archive — Jonathan Nielsen <jonathan@...> 2010/05/21

> Thanks for your comment.

[#30347] Re: [Feature #1478] Ruby archive — Jonathan Nielsen <jonathan@...> 2010/05/21

OK Hiroshi, I read some of the comments earlier in the thread that I

[#30355] Re: [Feature #1478] Ruby archive — Caleb Clausen <vikkous@...> 2010/05/21

On 5/20/10, Jonathan Nielsen <jonathan@jmnet.us> wrote:

[#30364] Re: [Feature #1478] Ruby archive — Benoit Daloze <eregontp@...> 2010/05/22

Hi,

[#23505] [Bug #1494] tempfile#unlink may silently fail on windows — Nicholas Manning <redmine@...>

Bug #1494: tempfile#unlink may silently fail on windows

19 messages 2009/05/19

[#23572] [Bug #1525] Deadlock in Ruby 1.9's VM caused by ConditionVariable.wait and fork? — Hongli Lai <redmine@...>

Bug #1525: Deadlock in Ruby 1.9's VM caused by ConditionVariable.wait and fork?

27 messages 2009/05/27

[#23595] Meaning of RUBY_PLATFORM — Rick DeNatale <rick.denatale@...>

The RUBY_PLATFORM constant is documented in the latest Pickaxe as "The

17 messages 2009/05/28
[#23596] Re: Meaning of RUBY_PLATFORM — Luis Lavena <luislavena@...> 2009/05/28

On Thu, May 28, 2009 at 3:41 PM, Rick DeNatale <rick.denatale@gmail.com> wrote:

[#23602] Re: Meaning of RUBY_PLATFORM — Rick DeNatale <rick.denatale@...> 2009/05/28

On Thu, May 28, 2009 at 2:52 PM, Luis Lavena <luislavena@gmail.com> wrote:

[#23608] Re: Meaning of RUBY_PLATFORM — Luis Lavena <luislavena@...> 2009/05/28

On Thu, May 28, 2009 at 7:08 PM, Rick DeNatale <rick.denatale@gmail.com> wrote:

[#23609] Re: Meaning of RUBY_PLATFORM — Rick DeNatale <rick.denatale@...> 2009/05/29

On Thu, May 28, 2009 at 7:22 PM, Luis Lavena <luislavena@gmail.com> wrote:

[ruby-core:23467] Re: REXML Thread Safety

From: Charles Oliver Nutter <charles.nutter@...>
Date: 2009-05-15 22:05:58 UTC
List: ruby-core #23467
FWIW, most DOM implementations are not thread-safe.

Weston Sewell wrote:
> I've been using Ruby for several years but I just joined the list 
> because I ran into a problem that I'm not sure how to solve (sorry for 
> not lurking for the requisite eon, I've been working night and day on a 
> Ruby project for work).
> 
> It appears that REXML may not be completely thread-safe. Is it intended 
> to be? I've run into a problem that I was able to reproduce in a test 
> that I'll post at the bottom. Basically, it appears that accessing 
> either #to_s or #value on REXML::Attribute causes a change in the state 
> of the instance (setting @normalized and @unnormalized to a computed 
> value or 'nil'). And since these are not intended to be "destructive" 
> calls, neither are some of the Element methods that call them (i.e. 
> Element#inspect). When using threads of course we are not protecting 
> non-destructive calls with semaphors (and actually we are using XMPP4r 
> so we don't have complete conrol over what gets called and how).
> 
> Is there anyone who is familiar with this situation?
> 
> TIA
> Weston
> 
> Test Code  - exception occurs in either #to_s or #value (on my system 
> this always happens within 900 iterations)
> ------------------------------------------------------------------------------
> common_doc = REXML::Document.new( '<foo bar="somevalue" />' )
> 
> def parse(doc)
>     foo = doc.root
>     foo.inspect
>     foo.attributes['bar']
> end
> 
> def multiparse(doc)
>     1000000.times do |iteration|
>         puts "Iteration #{iteration}" if(iteration == 0 || (iteration % 
> 100 == 0))
>         parse(doc)
>     end
> end
> 
> threads = []
> threads << Thread.new { multiparse(common_doc) }
> threads << Thread.new { multiparse(common_doc) }
> threads << Thread.new { multiparse(common_doc) }
> threads << Thread.new { multiparse(common_doc) }
> threads << Thread.new { multiparse(common_doc) }
> threads << Thread.new { multiparse(common_doc) }
> 
> threads.each do |thread|
>     thread.join
> end
> 


In This Thread

Prev Next