Cygwin под Windows 7 x64

12927
Rom

При переходе на Windows 7 x64 у меня возникают проблемы с запуском Cygwin в этой среде. Похоже, что функция ASLR в Windows 7 является причиной. Это приводит к загрузке различных библиотек DLL по разным адресам в виртуальной памяти, и похоже, что Cygwin ожидает одинаковые базовые адреса для одних и тех же библиотек DLL в родительском и дочернем процессах, когда порождается дочерний процесс. Видимо, для этого есть специальная проверка, и отображается следующее сообщение:

5816 [main] perl 4148 C:\Cygwin\bin\perl.exe: *** fatal error - unable to remap C:\Cygwin\lib\perl5\5.10\i686-Cygwin\auto\Data\Dumper\Dumper.dll to same address as parent(0x9A0000) != 0xB40000 

Я попытался отключить ASLR, задав для HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ MoveImages: DWORD значение 0, но, похоже, ничего не происходит: библиотеки DLL по-прежнему загружаются в случайные места (проверено выше сообщение и, посмотрев на адресное пространство обоих процессов с помощью Process Explorer)

Хотя в то же время я планирую использовать XP Mode для запуска Cygwin, он кажется немного искусственным и создает некоторые ограничения.

Кто-нибудь знает способ запуска Cygwin напрямую под Windows 7 x64?

6
Вы пробовали запустить Cygwin в «режиме совместимости»? Reuben 14 лет назад 0
Да. Также как администратор (то есть в повышенном режиме). Никто из них не поможет :( Rom 14 лет назад 0

3 ответа на вопрос

4
akira

была та же проблема под Windows 7 64-битной, rebase решает ее:

это делает, спасибо! Rom 14 лет назад 0
1
Reini Urban

Perlrebase (я сопровождающий и автор)

Еще не подтверждено:

  • Если вы все еще получаете ошибки форка, попробуйте очистить флаг ASLR в DLL.
    peflags -d0 во всех dll (например, в вашем rebase.lst)

Я пытаюсь это сейчас, и если это поможет, я выпущу новую версию Perl.

Можете ли вы объяснить, как это на самом деле помогает ОП? Canadian Luke 8 лет назад 0
0
A Dwarf

Это одна из тех немногих ситуаций, в которой вам потребуется режим Windows XP, а не совместимость с XP. Надеюсь, ваш процессор соответствует требованиям; Вам понадобится процессор, поддерживающий аппаратную виртуализацию.

Чтобы быть уверенным, запустите соответствующий инструмент ниже.

  • Утилита идентификации процессоров Intel
  • Утилита совместимости систем виртуализации AMD

Примечание. Режим XP все еще находится в режиме кандидата на выпуск. По крайней мере, на моей 32-битной машине он ведет себя хорошо. Я уверен, что у вас будет похожий опыт на вашем x64.

РЕДАКТИРОВАТЬ: я могу опубликовать только одну гиперссылку на ответ, пока я больше не новый пользователь. Так что ссылки идут на комментарий к этому сообщению

Итак, Intel: http://www.intel.com/support/processors/tools/piu/ AMD: http://support.amd.com/us/Search/results.aspx?k=amd%20virtualization%20compatibility% 20check A Dwarf 14 лет назад 0
Вы сказали, что планировали это, но еще не запускали его в режиме XP. В любом случае, какие это могут быть ограничения? Режим XP - это режим полной виртуализации. У программы нет возможности узнать, что она находится в среде виртуальных машин. A Dwarf 14 лет назад 0
это не имеет отношения к первоначальному вопросу, но на всякий случай это может быть полезно для кого-то, вот ограничения для работы в режиме XP для меня: a) режим x64 недоступен в Win7 XP Mode b) там доступен только один процессор в) один конкретный инструмент работает с локальными дисками иначе, чем с подключенными «сетевыми» дисками, и поэтому мне нужно запустить его на основной машине. Все эти проблемы имеют обходной путь или могут быть допущены, но реальное решение является предпочтительным Rom 14 лет назад 0