Skip to content

ThreadKill not handled by ThreadFiber #2773

@e2

Description

@e2

Celluloid tests are failing consistently on JRuby (jruby-1.7.19 and jruby-head from RVM) with stacks like the following:

Exception in thread "Ruby-0-Fiber-3" org.jruby.exceptions.ThreadKill
        at org.jruby.RubyThread.throwThreadKill(RubyThread.java:517)
        at org.jruby.RubyThread.checkMail(RubyThread.java:216)
        at org.jruby.RubyThread.pollThreadEvents(RubyThread.java:513)
        at org.jruby.RubyThread.pollThreadEvents(RubyThread.java:509)
        at org.jruby.RubyThread.executeBlockingTask(RubyThread.java:1064)
        at org.jruby.RubyThread.wait_timeout(RubyThread.java:1413)
        at org.jruby.ext.thread.Queue.pop(Queue.java:152)
        at org.jruby.ext.thread.Queue.pop(Queue.java:127)
        at org.jruby.ext.thread.SizedQueue.pop(SizedQueue.java:111)
        at org.jruby.ext.fiber.ThreadFiber$1.run(ThreadFiber.java:214)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

On jruby-head it's:

Exception in thread "Ruby-0-Fiber-1" org.jruby.exceptions.ThreadKill
        at org.jruby.RubyThread.throwThreadKill(RubyThread.java:625)
        at org.jruby.RubyThread.toKill(RubyThread.java:274)
        at org.jruby.RubyThread.executeInterrupts(RubyThread.java:243)
        at org.jruby.RubyThread.pollThreadEvents(RubyThread.java:615)
        at org.jruby.RubyThread.executeTask(RubyThread.java:1363)
        at org.jruby.ext.thread.Queue.pop(Queue.java:195)
        at org.jruby.ext.thread.Queue.pop(Queue.java:164)
        at org.jruby.ext.fiber.ThreadFiber$1.run(ThreadFiber.java:250)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

Isn't ThreadFiber.run supposed to catch and handle ThreadKill?

Let me know if I can debug further (though coming up with a specific short snippet may be hard).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions