Ошибка Cygwin: «-bash: fork: retry: Ресурс временно недоступен» - PullRequest
64 голосов
/ 16 февраля 2012

Я недавно переустановил Cygwin на моем компьютере, чтобы получить доступ к нескольким элементам командной строки, которые мне не хватало. У меня никогда не было предыдущих проблем с Cygwin, но после этой переустановки сообщение об ошибке продолжает появляться после (почти) каждой введенной команды. Например:

-bash-4.1$ wc m1.txt
      3 [main] bash 2216 child_info_fork::abort: data segment start: parent(0x26D000) !=     child(0x38D000)
-bash: fork: retry: Resource temporarily unavailable
2013930  4027950 74968256 m1.txt

Как правило, команда по-прежнему выполняется (как показано выше), но не всегда. Иногда сообщение об ошибке появляется несколько раз подряд (затем начальное число «3» изменится на «4» или «2», особенно если я запущу второе окно Cygwin.

Кроме того, как только я запускаю Cygwin, перед приглашением я получаю следующее сообщение:

      3 [main] bash 6140 child_info_fork::abort: data segment start: parent(0x26D000)     != child(0x36D000)
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$

В настоящее время я спорю о том, нужно ли снова удалить / переустановить Cygwin или просто использовать сообщения об ошибках, но мне было любопытно, может ли быть проблема, о которой я не знаю.

Ответы [ 12 ]

116 голосов
/ 24 января 2013

(при условии, что Cygwin установлен в C: \ Cygwin):

  1. Откройте диспетчер задач и закройте все процессы, связанные с Cygwin.
  2. Откройте C: \ Cygwin \ bin в проводнике Windows
  3. Убедитесь, что в этой папке существуют dash.exe, ash.exe, rebase.exe и rebaseall.
    • Если какой-либо из них отсутствует, перезапустите установку Cygwin и выберите пакеты dash, ash и rebase
  4. Щелкните правой кнопкой мыши папку C: \ Cygwin, снимите флажок Только для чтения (если она отмечена) и нажмите ОК.
    • Когда появляется ошибка о невозможности переключения некоторых файлов, выберите «Игнорировать все». Подождите, пока этот процесс завершится.
  5. Перейдите к C: \ Cygwin \ bin в Windows Explorer
  6. Щелкните правой кнопкой мыши dash.exe и выберите «Запуск от имени администратора». Командная строка должна отображаться только с $
  7. Введите /usr/bin/rebaseall -v, нажмите Enter и дождитесь завершения процесса.
    • Если вы получаете ошибки о запущенных процессах Cygwin, попробуйте снова шаг 1 Если это по-прежнему не работает, перезагрузите компьютер в безопасном режиме и повторите эти шаги.
    • Комментатор отметил, что, в зависимости от ваших настроек, вам может потребоваться ввести cd /usr/bin && ./rebaseall -v.
  8. Попробуйте снова открыть Cygwin.

Этот процесс работал для меня. Надеюсь, это сработает и у вас, ребята.

Источник: http://cygwin.wikia.com/wiki/Rebaseall

13 голосов
/ 14 января 2015

Я хотел бы добавить следующее к ответам выше, поскольку это то, что я должен был сделать после переустановки Cygwin:

Перейдите в каталог "/ usr / bin" (обычно это C: \ cygwin \ bin) и щелкните правой кнопкой мыши, запустите от имени администратора файл: dash.exe Затем в командной строке $ введите следующее, нажимая клавишу ввода после каждой строки:

cd /usr/bin/
/usr/bin/peflags * -d 1
/usr/bin/rebaseall -v

То, что он делает, помечает DLL как «способные к перебазированию», а затем перебазирует их. Вы должны иметь peflags.exe в дополнение к вышеупомянутым файлам (в предыдущих ответах). После этого вам может потребоваться перезапустить Windows, и вам определенно нужно убедиться, что нет запущенных процессов или служб, принадлежащих Cygwin. (Используйте диспетчер задач, завершите все связанные процессы, а затем на вкладке «Службы» найдите любую службу, начинающуюся с CYG, и остановите ее.)

После этого я смог запустить Cygwin без каких-либо ошибок о загрузке DLL на неправильные адреса, такие как ошибки разветвления и т. Д.

Я надеюсь, что это помогает другим, так как это было трудно найти.

SOURCE: http://www.cygwin.com/faq.html#faq.using.fixing-fork-failures 
and the rebase README file.
5 голосов
/ 01 августа 2016

Чтобы добавить здесь другие ответы, мы столкнулись с той же проблемой, но не смогли запустить команду rebase из оболочки ash или dash.Однако при запуске команды из оболочки Windows cmd сработало следующее.

cmd /c "C:\cygwin64\bin\ash.exe /usr/rebaseall -v"

-v - получить подробный вывод

3 голосов
/ 17 октября 2016

Я нашел другую информацию здесь: http://cygwin.com/ml/cygwin/2014-02/msg00531.html Вы должны удалить базу данных в /etc/rebase.db* и сделать в «пепельном» окне: peflags * -d 1 rebaseall У меня работает на 2серверы.

2 голосов
/ 22 сентября 2016

Я решил эту проблему, перезагрузив компьютер.Возможно, установил обновление драйвера и продолжал использовать спящий режим вместо выключения.

1 голос
/ 28 июня 2017

Если вы используете Cygwin от babun, после rebaseall попробуйте запустить Cygwin, выполнив .babun \ cygwin \ cygwin.bat в командной строке Windows или в проводнике Windows.

Это работает для меня (при запуске консоли babun по умолчанию - mintty приводит к ошибке форка).

1 голос
/ 22 мая 2017

Возникла та же проблема при загрузке Cygwin с разветвлением cygiconv-2.dll и неуспешной загрузке в терминале Cygwin, но после выключения моего антивируса (это было специально для рекламы) проблема была решена, и Cygwin работал правильно.

0 голосов
/ 21 сентября 2018

Эта проблема носит прерывистый характер, и я обнаружил эту проблему, когда сеть слишком медленная, чтобы подключиться к удаленной машине на AWS .... У меня есть сценарий Shell, который запускается через оболочку Gitbash и подключается к экземпляру AWS EC2 с помощью ssh ..... Большую часть времени он работал правильно, но 2 раза из 100 попадали в эту проблему bash: fork: retry: Ресурс временно недоступен .... Помогает удаление терминала MSYS2 из диспетчера задач побороть с этим вопросом .... Отрицательная сторона - вам нужно запускать скрипты с самого начала ...

0 голосов
/ 26 июля 2018

Rebase в моем случае не помогло. В дополнение к тому, что предложили другие, я заметил, что уменьшение длины переменной окружения PATH устранило проблему для меня (и для других людей, а также, как видно из этого ответа).

0 голосов
/ 07 декабря 2016

Я начал сталкиваться с этой проблемой после обновления до Windows 10. На данный момент я не вижу, чтобы какой-либо из вышеуказанных методов работал.
Что я замечаю, так это то, что если вы запустите cygwin с правами администратора (щелкните правой кнопкой мыши и скажете «запустить от имени администратора»), то все будет работать нормально.
Или вы открываете cmd как администратор, а затем запускаете Cygwin оттуда, а также он работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...