Я знаю, что уже есть много информации об этом, но я не смог найти решение. Может быть, кто-то, кто знает больше о том, как работает Cygwin, может помочь.

Cygwin работал без проблем до среды. В среду, пока экспериментировал, я случайно выполнил eval "exit 1" . Cygwin немедленно, потому что печатает ошибки форка, как это:

      0 [main] -bash 10632 fork: child 11748 - died waiting for dll loading, errno 11
-bash: fork: retry: Resource temporarily unavailable

Теперь я получаю эти сообщения об ошибках каждый раз, когда пытаюсь получить исходный файл .bash_profile , с которым я здесь связан, в том числе при первом запуске терминала. Единственный файл, получаемый из этого файла, который также вызывает ошибку, - это git-completion.bash , но удаление этого файла не предотвращает возникновение ошибок в исходном файле source .bash_profile .

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

Я не управляю никакой BLODA. Я использую 64-битный Cygwin на Windows 7.

1 ответ1

1

Сбои разветвления на Cygwin никогда не могут быть устранены на 100% - см. Cygwin FAQ - Как исправить сбои разветвления?

Цитирование сайта Cygwin:

Как исправить ошибки fork()?

К сожалению, Windows не использует модель создания процесса fork/exec, обнаруженную в UNIX-подобных ОС, поэтому Cygwin трудно реализовать надежный и правильный fork(), который может привести к сообщениям об ошибках, таких как:

  • невозможно переназначить somedll на тот же адрес, что и родительский
  • не мог выделить кучу
  • умер в ожидании загрузки DLL
  • ребенок -1 - умер в ожидании longjmp
  • до инициализации
  • STATUS_ACCESS_VIOLATION
  • ресурс временно недоступен

Возможные решения для вышеуказанных ошибок:

  • Перезапустите любой процесс, который пытается (и не может) использовать fork(). Иногда Windows устанавливает среду процесса, которая даже более враждебна для fork(), чем обычно.
  • Убедитесь, что вы удалили (а не просто отключили) все программное обеспечение на BLODA.
  • Переключитесь с 32-битного Cygwin на 64-битный Cygwin, если ваша ОС и процессор поддерживают это. С большим адресным пространством fork() с меньшей вероятностью потерпит неудачу.
  • Попробуйте установить для переменной среды CYGWIN значение "detect_bloda", что позволит выполнить дополнительную отладку, которая может указывать, какое другое программное обеспечение вызывает проблему.

По моему опыту, чем дольше ваша Windows-машина работает и тем больше у вас шансов на отказ вилки, я предполагаю, что фрагментация памяти с течением времени может затруднить Cygwin выполнение своих действий по взлому.

Я заметил, что добавление дополнительной оперативной памяти тоже может помочь.

Я добился разумного успеха, запланировав перезагрузку компьютеров Cygwin.

Тем не менее, наиболее эффективным было использование 64-битного Cygwin вместо 32-битного и готовность полностью заменить cygwin и быть щедрым на предоставление явных антивирусных исключений для ваших папок установки cygwin.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .