Подтвердить что ты не робот

Ошибка Cygwin: "- bash: fork: retry: ресурс временно недоступен"

Я недавно переустановил 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 или просто жить с сообщениями об ошибках, но мне было любопытно, может ли быть проблема, о которой я не знаю.

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

Что он делает, он отмечает dll как "rebase-able", а затем переустанавливает их. Вы должны иметь peflags.exe в дополнение к вышеуказанным файлам (в предыдущих ответах). Возможно, вам придется перезапустить окна после этого, и вам обязательно нужно убедиться, что нет процессов или служб, принадлежащих запуску cygwin. (Используйте диспетчер задач, убейте любые связанные процессы, а затем под вкладкой services найдите любой сервис, начинающийся с CYG, и остановите его.)

После этого я смог запустить cygwin без каких-либо ошибок, связанных с загрузкой dll на неправильные адреса, а также ошибки fork и т.д.

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

SOURCE: http://www.cygwin.com/faq.html#faq.using.fixing-fork-failures 
and the rebase README file.

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

У меня была ошибка на win10, и я пытался переустановить c: перед установкой. то я увидел, что установщик установил его вместо c:/Users/myuser поэтому я копировал все файлы из c:/Users/myuser в c:.badun а затем перезапустите плюс open badun.bat

not shure, если бы это было разумно, его теперь дублированный XD... но потом он снова работал.

Ответ 9

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

Ответ 10

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

Ответ 11

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

Ответ 12

Просто переустановите cygwin и выберите TCL и активируйте EXPECT