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

Спасибо за вашу помощь!

12 57

12 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

не Шуре если это было мудро его теперь дублируется XD... но потом это сработало снова.

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

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

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

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