Skip to content

Deadlock using Edge Future chain & zip #611

@ms-ati

Description

@ms-ati

I am seeing this from irb -rconcurrent-edge. Is this something I am doing wrong, or an error?

Array.new(4) do 
  Concurrent.zip(
    Array.new(5) do |i|
      Concurrent.delay do 
        puts "starting #{i}"
        sleep(i)
        puts "done #{i}"
        i
      end
    end
  )
end.inject { |a,b| a.chain { b }.flat }.value!
starting 0
done 0
starting 1
starting 2
starting 3
starting 4
done 1
done 2
done 3
done 4
fatal: No live threads left. Deadlock?
	from /Users/marcsiegel/.gem/ruby/2.3.1/gems/concurrent-ruby-edge-0.2.3.pre3/lib/concurrent/edge/future.rb:403:in `sleep'
	from /Users/marcsiegel/.gem/ruby/2.3.1/gems/concurrent-ruby-edge-0.2.3.pre3/lib/concurrent/edge/future.rb:403:in `wait'
	from /Users/marcsiegel/.gem/ruby/2.3.1/gems/concurrent-ruby-edge-0.2.3.pre3/lib/concurrent/edge/future.rb:403:in `block in wait_until_complete'
	from /Users/marcsiegel/.gem/ruby/2.3.1/gems/concurrent-ruby-edge-0.2.3.pre3/lib/concurrent/edge/future.rb:400:in `synchronize'
	from /Users/marcsiegel/.gem/ruby/2.3.1/gems/concurrent-ruby-edge-0.2.3.pre3/lib/concurrent/edge/future.rb:400:in `wait_until_complete'
	from /Users/marcsiegel/.gem/ruby/2.3.1/gems/concurrent-ruby-edge-0.2.3.pre3/lib/concurrent/edge/future.rb:784:in `wait_until_complete!'
	from /Users/marcsiegel/.gem/ruby/2.3.1/gems/concurrent-ruby-edge-0.2.3.pre3/lib/concurrent/edge/future.rb:620:in `value!'
	from (irb):1
	from /Users/marcsiegel/.rubies/ruby-2.3.1/bin/irb:11:in `<main>'

  • Operating system: Mac OS X 10.11.6 (El Capitan)
  • concurrent-ruby version: 1.0.3.pre3
  • concurrent-ruby-ext installed: no
  • concurrent-ruby-edge used: yes: 0.2.3.pre3

Metadata

Metadata

Assignees

Labels

bugA bug in the library or documentation.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions