elcuervo / airplay

Airplay bindings to Ruby
MIT License
1.07k stars 69 forks source link

Net::PTTH crashed!, Errno::EPIPE: Broken Pipe #39

Closed bobbyduhbrain closed 10 years ago

bobbyduhbrain commented 10 years ago

Context: I was using FFMPEG to transcode a video file with more than one audio channel. After completing the process, I fed the new video file into airplay. After airplay resumed playing the file, it held on a black screen then crashed.

Net::PTTH crashed! Errno::EPIPE: Broken pipe /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth/socket.rb:12:in write' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth/socket.rb:12:inwrite' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth.rb:149:in block in keep_connection_active' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:inblock in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:in block in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:inblock in create' Terminating task: type=:timer, meta=nil, status=:sleeping Terminating task: type=:timer, meta=nil, status=:sleeping Terminating task: type=:timer, meta=nil, status=:sleeping Terminating task: type=:timer, meta=nil, status=:sleeping Terminating task: type=:timer, meta=nil, status=:sleeping Terminating task: type=:timer, meta=nil, status=:sleeping Terminating task: type=:timer, meta=nil, status=:sleeping Terminating task: type=:timer, meta=nil, status=:sleeping Airplay::Connection crashed! Celluloid::DeadActorError: attempted to call a dead actor /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/proxies/sync_proxy.rb:23:in method_missing' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection/persistent.rb:31:insocket' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection/persistent.rb:27:in close' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection.rb:32:inclose' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:in public_send' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:indispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:67:in dispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:322:inblock in handle_message' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:in block in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:inblock in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:in block in create' Airplay::Protocol::Player crashed! Celluloid::DeadActorError: attempted to call a dead actor /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/proxies/sync_proxy.rb:23:inmethod_missing' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection/persistent.rb:31:in socket' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection/persistent.rb:27:inclose' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection.rb:32:in close' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:inpublic_send' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:in dispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:67:indispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:322:in block in handle_message' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:inblock in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:in block in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:inblock in create' (celluloid):0:in remote procedure call' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:92:invalue' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/proxies/sync_proxy.rb:33:in method_missing' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/protocol/player.rb:123:incleanup' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/protocol/player.rb:139:in block in check_for_playback_status' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:inblock in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:in block in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:inblock in create' Terminating task: type=:timer, meta=nil, status=:callwait Terminating task: type=:timer, meta=nil, status=:callwait Terminating task: type=:timer, meta=nil, status=:callwait Terminating task: type=:timer, meta=nil, status=:callwait Terminating task: type=:timer, meta=nil, status=:callwait

bobbyduhbrain commented 10 years ago

Some more on this:

Net::PTTH crashed! Errno::ECONNRESET: Connection reset by peer /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth/socket.rb:8:in readpartial' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth/socket.rb:8:inread' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth.rb:77:in request' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:inpublic_send' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:in dispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:67:indispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:322:in block in handle_message' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:inblock in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:in block in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:inblock in create' Airplay::Connection crashed! Errno::ECONNRESET: Connection reset by peer /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth/socket.rb:8:in readpartial' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth/socket.rb:8:inread' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth.rb:77:in request' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:inpublic_send' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:in dispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:67:indispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:322:in block in handle_message' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:inblock in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:in block in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:inblock in create' (celluloid):0:in remote procedure call' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:92:invalue' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/proxies/sync_proxy.rb:33:in method_missing' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection/persistent.rb:40:inrequest' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection.rb:109:in send_request' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection.rb:79:inget' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:in public_send' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:indispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:67:in dispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:322:inblock in handle_message' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:in block in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:inblock in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:in block in create' Airplay::Protocol::Player crashed! Errno::ECONNRESET: Connection reset by peer /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth/socket.rb:8:inreadpartial' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth/socket.rb:8:in read' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/net-ptth-0.0.9/lib/net/ptth.rb:77:inrequest' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:in public_send' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:indispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:67:in dispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:322:inblock in handle_message' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:in block in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:inblock in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:in block in create' (celluloid):0:inremote procedure call' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:92:in value' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/proxies/sync_proxy.rb:33:inmethod_missing' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection/persistent.rb:40:in request' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection.rb:109:insend_request' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/connection.rb:79:in get' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:inpublic_send' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:in dispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:67:indispatch' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:322:in block in handle_message' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:inblock in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:in block in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:inblock in create' (celluloid):0:in remote procedure call' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/calls.rb:92:invalue' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/proxies/sync_proxy.rb:33:in method_missing' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/protocol/player.rb:83:ininfo' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/bundler/gems/airplay-805b6ee203f2/lib/airplay/protocol/player.rb:141:in block in check_for_playback_status' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:inblock in task' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:in block in initialize' /Users/Mike/.rvm/gems/ruby-2.0.0-p195/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:inblock in create'

I am pretty sure this happens as a result of the player losing connection with the Apple TV when it's stuck on the black screen it defaults to after a video has finished playing. When the Apple TV goes to screensaver after a few minutes of being stuck on the black screen it will crash the player and throw these errors.