Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #5063
| From | Markus Fischer <markus@fischer.name> |
|---|---|
| Newsgroups | comp.lang.ruby |
| Subject | jruby --1.9 : Exception in thread "RubyThread-1: threadtest.rb:1" java.lang.LinkageError: loader (instance of org/jruby/util/JRubyClassLoader): attempted duplicate class definition for name: "threadtest$block_0$RUBY$true?" |
| Date | 2011-05-25 16:34 -0500 |
| Organization | Service de news de lacave.net |
| Message-ID | <4DDD75A6.1030608@fischer.name> (permalink) |
Hi,
the following script works under MRI 1.9, but not under jruby 1.9 (but
in jruby 1.8):
require 'thread'
class MutexedBoolean
def initialize(initial_value)
@value = initial_value
@mutex = Mutex.new
end
def true?
@mutex.synchronize do
@value == true
end
end
end
threads = []
run = MutexedBoolean.new(true)
Thread.abort_on_exception = true
threads << Thread.new do
while run.true?
puts "1"
sleep 1
end
end
threads << Thread.new do
while run.true?
puts "2"
sleep 1
end
end
threads.each { |t| t.join }
Here's the stacktrace I'm getting. Only the first thread runs:
Exception in thread "RubyThread-1: threadtest.rb:1"
java.lang.LinkageError: loader (instance of
org/jruby/util/JRubyClassLoader): attempted duplicate class definition
for name: "threadtest$block_0$RUBY$true?"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at
org.jruby.util.JRubyClassLoader.defineClass(JRubyClassLoader.java:76)
at
org.jruby.internal.runtime.methods.InvocationMethodFactory.endClassWithBytes(InvocationMethodFactory.java:1358)
at
org.jruby.internal.runtime.methods.InvocationMethodFactory.getBlockCallback19(InvocationMethodFactory.java:899)
at
org.jruby.javasupport.util.RuntimeHelpers.createBlockCallback19(RuntimeHelpers.java:177)
at
org.jruby.javasupport.util.RuntimeHelpers.createCompiledBlockBody19(RuntimeHelpers.java:292)
at
org.jruby.javasupport.util.RuntimeHelpers.createCompiledBlockBody19(RuntimeHelpers.java:282)
at
org.jruby.ast.executable.RuntimeCache.createBlockBody19(RuntimeCache.java:442)
at
org.jruby.ast.executable.RuntimeCache.getBlockBody19(RuntimeCache.java:85)
at
org.jruby.ast.executable.AbstractScript.getBlockBody190(AbstractScript.java:106)
at threadtest.method__2$RUBY$true_p_(threadtest.rb:9)
at
threadtest$method__2$RUBY$true_p_.call(threadtest$method__2$RUBY$true_p_:65535)
at
threadtest$method__2$RUBY$true_p_.call(threadtest$method__2$RUBY$true_p_:65535)
at
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:262)
at
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:105)
at threadtest.block_2$RUBY$__file__(threadtest.rb:31)
at
threadtest$block_2$RUBY$__file__.call(threadtest$block_2$RUBY$__file__:65535)
at org.jruby.runtime.CompiledBlock19.yield(CompiledBlock19.java:154)
at org.jruby.runtime.CompiledBlock19.call(CompiledBlock19.java:82)
at org.jruby.runtime.Block.call(Block.java:89)
at org.jruby.RubyProc.call(RubyProc.java:268)
at org.jruby.RubyProc.call(RubyProc.java:232)
at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:95)
at java.lang.Thread.run(Thread.java:662)
If I remove the @mutex check in true?, it works in jruby 1.9.
thanks,
- Markus
Back to comp.lang.ruby | Previous | Next — Next in thread | Find similar | Unroll thread
jruby --1.9 : Exception in thread "RubyThread-1: threadtest.rb:1" java.lang.LinkageError: loader (instance of org/jruby/util/JRubyClassLoader): attempted duplicate class definition for name: "threadtest$block_0$RUBY$true?" Markus Fischer <markus@fischer.name> - 2011-05-25 16:34 -0500
Re: jruby --1.9 : Exception in thread "RubyThread-1: threadtest.rb:1" java.lang.LinkageError: loader (instance of org/jruby/util/JRubyClassLoader): attempted duplicate class definition for name: "threadtest$block_0$RUBY$true?" Charles Oliver Nutter <headius@headius.com> - 2011-06-03 11:51 -0500
Re: jruby --1.9 : Exception in thread "RubyThread-1: threadtest.rb:1" java.lang.LinkageError: loader (instance of org/jruby/util/JRubyClassLoader): attempted duplicate class definition for name: "threadtest$block_0$RUBY$true?" Markus Fischer <markus@fischer.name> - 2011-06-05 10:41 -0500
Re: jruby --1.9 : Exception in thread "RubyThread-1: threadtest.rb:1" java.lang.LinkageError: loader (instance of org/jruby/util/JRubyClassLoader): attempted duplicate class definition for name: "threadtest$block_0$RUBY$true?" Charles Oliver Nutter <headius@headius.com> - 2011-06-08 02:30 -0500
Re: jruby --1.9 : Exception in thread "RubyThread-1: threadtest.rb:1" java.lang.LinkageError: loader (instance of org/jruby/util/JRubyClassLoader): attempted duplicate class definition for name: "threadtest$block_0$RUBY$true?" Markus Fischer <markus@fischer.name> - 2011-06-08 07:34 -0500
Re: jruby --1.9 : Exception in thread "RubyThread-1: threadtest.rb:1" java.lang.LinkageError: loader (instance of org/jruby/util/JRubyClassLoader): attempted duplicate class definition for name: "threadtest$block_0$RUBY$true?" Charles Oliver Nutter <headius@headius.com> - 2011-06-10 02:38 -0500
csiph-web