Блокировка потока при выполнении простых операций в pry

[Примечание: я «исправил» эту проблему, создав и используя новый набор драгоценных камней. Мне все еще любопытно, почему возникла проблема, но она больше не блокирует меня.]

[Мне известно, что существует аналогичная проблема в тупиковой ситуации в Ruby join(), но я попробовал параметр тайм-аута, предложенный там, и это не помогает. Я подозреваю, что там не раскрыта какая-то конкретная проблема.]

Я получаю сообщение об ошибке ниже при запуске кода ниже, но только при выполнении в сеансе pry. Этот код не менялся и работал нормально в течение некоторого времени, и я понятия не имею, почему это проблема только сейчас. Я использую pry версии 0.11.3 на Ruby 2.5.1. Кроме того, этот код отлично работает при вставке в pry; это не работает в моем приложении wifi-wand, которое запускает pry в контексте одного из своих объектов (gem install wifi-wand для установки, https://github.com/keithrbennett/wifiwand — страница проекта).

domains = %w(google.com  baidu.com)
puts "Calling dig on domains #{domains}..." if @verbose_mode

threads = domains.map do |domain|
  Thread.new do
    output = `dig +short #{domain}`
    output.length > 0
  end
end

threads.each(&:join)


[1] pry(#<WifiWand::CommandLineInterface>)> ci
Calling dig on domains ["google.com", "baidu.com"]...
fatal: No live threads left. Deadlock?
3 threads, 3 sleeps current:0x00007fbd13d0c5a0 main thread:0x00007fbd13d0c5a0
* #<Thread:0x00007fbd14069c20 sleep_forever>
   rb_thread_t:0x00007fbd13d0c5a0 native:0x00007fff89c2b380 int:0
   /Users/kbennett/work/wifi-wand/lib/wifi-wand/models/base_model.rb:89:in `join'
   /Users/kbennett/work/wifi-wand/lib/wifi-wand/models/base_model.rb:89:in `each'
   /Users/kbennett/work/wifi-wand/lib/wifi-wand/models/base_model.rb:89:in `block in connected_to_internet?'
   /Users/kbennett/work/wifi-wand/lib/wifi-wand/models/base_model.rb:126:in `connected_to_internet?'
   /Users/kbennett/work/wifi-wand/lib/wifi-wand/command_line_interface.rb:264:in `cmd_ci'

person Keith Bennett    schedule 04.07.2018    source источник
comment
Поскольку это происходит только при использовании Wi-Fi-палочки, как вы объяснили (а не при использовании самого подглядывания): не могли бы вы объяснить, как вы запускаете Wi-Fi-палочку в вашем случае? Когда я просто делаю wifi-wand -s и ввожу ваш код (напрямую или через %edit), он просто работает (если я не ошибаюсь) и показывает [#<Thread:0x00007ff82bafa200@(pry):5 dead>, #<Thread:0x00007ff82bafa0e8@(pry):5 dead>] как законный результат.   -  person Jay Schneider    schedule 04.07.2018
comment
Спасибо, Джей. Я активирую этот код, вызвав команду ci (подключен к Интернету?) (то есть просто набрав ci[Enter] в командной строке pry). Я не удивлен мыслью, что это работает для вас, потому что это всегда работало и для меня до сегодняшнего дня.   -  person Keith Bennett    schedule 04.07.2018
comment
@JaySchneider Я исправил проблему, создав новый набор драгоценных камней (rvm) и используя его. Мне все еще кажется безумием, что сегодня он начал сходить с ума ни с того ни с сего, и я до сих пор удивляюсь, что произошло, но он больше не блокирует меня.   -  person Keith Bennett    schedule 04.07.2018
comment
Хорошо, это приятно слышать. Если вы все еще хотите изучить это, возможно, укажите свою версию OSX в вопросе. Хотя это, похоже, не связано (поскольку вы, по-видимому, заработали здесь без изменений), у меня это сработало с 10.13.3. Вы также можете попытаться удалить драгоценные камни из своего старого сломанного набора драгоценных камней по частям, чтобы проверить наличие странных взаимодействий. Но в любом случае, я рад, что вы смогли найти решение, которое работает на данный момент.   -  person Jay Schneider    schedule 04.07.2018
comment
Я использую ОС Х 10.13.5. Я удалил/переустановил некоторые драгоценные камни по одному в наборе драгоценных камней по умолчанию, и удаление/переустановка awesome_print устранила проблему. (!!!!!!)   -  person Keith Bennett    schedule 04.07.2018
comment
Хорошо, поздравляю. Поэтому, если вы узнаете, на какой стороне проблема, скорее всего, вызвана, я думаю, что разработчики любого драгоценного камня поддержат на github. Хотите опубликовать свои результаты в качестве ответа на свой вопрос? Удачи в дальнейшем!   -  person Jay Schneider    schedule 04.07.2018


Ответы (1)


Как ни странно, проблема была устранена путем удаления и повторной установки драгоценного камня awesome_print. Понятия не имею почему.

person Keith Bennett    schedule 10.07.2018