Я отправил это на SuperUser..., но я надеялся, что у профессионалов здесь в ТАК могла бы быть хорошая идея о том, как зафиксировать это также....
Обычно мы разрабатываем в VS 2005 Pro, но я хотел дать VS 2010 вращение. Нам основывали сделанные на заказ инструменты прочь GNU, делают инструменты, которые называют при создании исполняемого файла.
Это - ошибка, которую я вижу каждый раз, когда я называю свой внешний инструмент:
...\gnu\make.exe): *** не мог фиксировать память для cygwin "кучи", ошибка Win32 487
Протест состоит в том, что это все еще работает превосходное в VS2005, а также быть названным прямо из командной строки. Кроме того, мой внешний инструмент является установкой точно то же как в VS 2005.
Разве существует ли некоторая установка где-нибудь, которая могла заставить эту ошибку быть брошенной?
Из проблема с кучей, ошибка win32 487 :
Каждое приложение Cygwin получает специальную кучу область для хранения вещей, которые унаследованы дочерним процессам. Например. весь файл структуры дескрипторов хранятся в эта область кучи (называемая "cygheap"). В cygheap есть место как минимум для 4000 структуры файловых дескрипторов. Но - вот и подсказка - это фиксированный размер. В cygheap не может расти. Его размер зарезервировано при запуске приложения и это блоки зафиксированы на потребность.
Почему-то ваш сервер приложению нужна вся cygheap пространство при беге по описанному условия.
Возможное решение можно найти в Изменение максимальной памяти Cygwin :
Куча Cygwin является расширяемой. Тем не мение, он начинается с фиксированного размера и попытки продлить его могут натолкнуться на память, которая была ранее выделенный Windows. В некоторых случаях, эту проблему можно решить, добавив запись в HKEY_LOCAL_MACHINE (чтобы изменить ограничение для всех пользователей) или HKEY_CURRENT_USER (только для текущий пользователь) раздела реестра.
Добавьте значение DWORD heap_chunk_in_mb и установите желаемый предел памяти в десятичных МБ. Желательно делать это в Cygwin с помощью regtool программа, включенная в Cygwin упаковка. (Для получения дополнительной информации о regtool или другие утилиты Cygwin, см. раздел «Cygwin Утилиты »или используйте параметр --help в каждый утилит.) Ты всегда должен быть осторожно при использовании regtool, так как повреждение системного реестра может привести к непригодной для использования системе. Этот пример устанавливает ограничение памяти 1024 МБ:
regtool -i set / HKLM / Software / Cygwin / heap_chunk_in_mb 1024 regtool -v список / HKLM / Программное обеспечение / Cygwin
Закройте все запущенные процессы Cygwin и перезапустите их. Память может быть выделена до размера системного свопа пространство минус любой размер любого запущенные процессы. Системный своп должен быть не меньше размера физически установленная оперативная память и может быть изменен в категории "Система" Панель управления.
Не помешает убедиться, что максимальный размер файла подкачки Windows достаточно велик.
Подведем итоги: среда не выделяет достаточно места в куче для исполняемых файлов cygwin. Почему-то острее проблема стоит с VS2010 Express. Вам нужно либо исправить среду, либо использовать другой порт Linux, кроме cygwin, либо использовать утилиты Microsoft.
Из списков электронной почты cygwin email lists похоже, что другие люди сталкивались с подобными ситуациями, даже при запуске не через Visual Studio, и они обнаружили, что решением часто является игра с настройками максимальной памяти Cygwin:
http://www.cygwin.com/cygwin-ug-net/setup-maxmem.html
(примечание: стоит прочитать этот разговор, выше, о некоторых значениях, которые работали и не работали).
Другие также сообщали о проблемах с антивирусными программами (рекомендуется выгружать из памяти), а также, возможно, с настройками совместимости (попробуйте установить XP), которые в некоторых случаях могут влиять на cygwin. См: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=377066
Что касается Visual Studio: Работаете ли вы на 64-разрядной машине, и если да, то обычно ли вы запускаете инструмент в 64-разрядной среде?
Я обнаружил, что поскольку Visual Studio 2010 работает в 32-битной среде, инструменты, запущенные из нее, запускаются как 32-битные процессы (для наглядного примера добавьте "cmd" в качестве инструмента). Я не уверен, почему это не происходит на 2005 (если только 2005 не позволяет системе запустить процесс (64bit), а 2010 обрабатывает его сама (32bit)).