adhearsion / virginia

A Reel interface to Adhearsion
MIT License
7 stars 10 forks source link

ERROR Celluloid: Celluloid::SupervisionGroup crashed! when shutting adhearsion down with ctrl+c #1

Closed ggayan closed 9 years ago

ggayan commented 11 years ago

Got the next stacktrace:

[2013-05-23 10:59:54] INFO  Adhearsion::Initializer: Received SIGINT. Shutting down.
[2013-05-23 10:59:54] INFO  Adhearsion::Process: Transitioning from running to stopping with 0 active calls due to shutdown event.
[2013-05-23 10:59:54] DEBUG Punchblock::Connection::Asterisk: Finalizing stream
[2013-05-23 10:59:54] INFO  Adhearsion::PunchblockPlugin::Initializer: Shutting down while connecting. Breaking the connection block.
[2013-05-23 10:59:54] INFO  Adhearsion::Console: Adhearsion Console shutting down
[2013-05-23 10:59:54] INFO  Adhearsion::Process: Adhearsion shut down
[2013-05-23 10:59:54] DEBUG Celluloid: Terminating 7 actors...
[2013-05-23 10:59:54] ERROR Celluloid: Celluloid::SupervisionGroup crashed!
Errno::EBADF: Bad file descriptor
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io.rb:37:in `select'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io.rb:37:in `wait_readable'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:33:in `wait_readable'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:46:in `rescue in block in sysread'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:43:in `block in sysread'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:399:in `synchronize'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:42:in `sysread'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:128:in `readpartial'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/reel-0.3.0/lib/reel/request.rb:19:in `read'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/reel-0.3.0/lib/reel/connection.rb:52:in `request'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/reel-0.3.0/lib/reel/app.rb:18:in `block in initialize'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/calls.rb:149:in `call'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/calls.rb:149:in `dispatch'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/actor.rb:331:in `block in handle_message'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/tasks.rb:42:in `block in initialize'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/tasks/task_fiber.rb:9:in `block in create'
[2013-05-23 10:59:54] DEBUG Celluloid: Shutdown completed cleanly
lpradovera commented 11 years ago

A full trace log and a few pointers about what is in the app would be perfect to be able to handle this. Thanks!

ggayan commented 11 years ago

Ok, my config/adhearsion.rb file is something like this:

# encoding: utf-8

Adhearsion.config do |config|
  config.development do |dev|
    dev.platform.logging.level = :debug
  end

  config.virginia.handler = ApiHandler

  config.platform.process_name = 'octophone'

  config.punchblock.platform = :asterisk
  config.punchblock.username = "..."
  config.punchblock.password = "..."
  config.punchblock.host = "..."
end

Adhearsion::Events.draw do
end

Adhearsion.router do
  route 'Internal Call', InternalCall, to: /^[1236][0-9]{3}$/
end

lib/internal_call.rb:

class InternalCall < Adhearsion::CallController
  def run
    answer
    dial "SIP/#{call.to}"
  end
end

lib/api_handler.rb:

require 'reel'
require 'reel/app'

class ApiHandler
  include Reel::App
  get('/dial') do
    Adhearsion::OutboundCall.originate 'SIP/1011' do
      dial 'SIP/1026'
    end
    [200, {}, "200 OK"]
  end
end

both 1011 and 1026 are internal sip accounts on our asterisk config.

after doing a GET to localhost:8080/dial, ending the call, and shutting down adhearsion:

[2013-05-23 12:15:28] DEBUG Celluloid: Terminating 7 actors...
[2013-05-23 12:15:28] ERROR Celluloid: Celluloid::SupervisionGroup crashed!
Errno::EBADF: Bad file descriptor
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io.rb:37:in `select'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io.rb:37:in `wait_readable'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:33:in `wait_readable'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:46:in `rescue in block in sysread'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:43:in `block in sysread'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:399:in `synchronize'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:42:in `sysread'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:128:in `readpartial'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/reel-0.3.0/lib/reel/request.rb:19:in `read'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/reel-0.3.0/lib/reel/connection.rb:52:in `request'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/reel-0.3.0/lib/reel/app.rb:18:in `block in initialize'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/calls.rb:149:in `call'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/calls.rb:149:in `dispatch'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/actor.rb:331:in `block in handle_message'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/tasks.rb:42:in `block in initialize'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-0.14.0/lib/celluloid/tasks/task_fiber.rb:9:in `block in create'
[2013-05-23 12:15:28] ERROR Adhearsion::Initializer: <Errno::EBADF> Bad file descriptor
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io.rb:37:in `select'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io.rb:37:in `wait_readable'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:33:in `wait_readable'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:46:in `rescue in block in sysread'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/celluloid/io/stream.rb:43:in `block in sysread'
    /Users/mak/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/celluloid-io-0.14.0/lib/c[2013-05-23 12:15:28] DEBUG Celluloid: Shutdown completed cleanly