Problema con el comando Visual C ++ 2010 (Express) Herramientas externas

0

Normalmente nos desarrollamos en VS 2005 Pro, pero quería darle un giro a VS 2010. Tenemos herramientas de compilación personalizadas basadas en GNU make tools que se llaman al crear un ejecutable.

Este es el error que veo cada vez que llamo a mi herramienta externa:

...\gnu\make.exe): *** couldn't commit memory for cygwin heap, Win32 error 487

La advertencia es que todavía funciona perfectamente bien en VS2005, además de ser llamado directamente desde la línea de comando. Además, mi herramienta externa está configurada exactamente igual que en VS 2005.

¿Hay alguna configuración en algún lugar que pueda provocar este error?

El e
fuente
¿No sería esto mejor en stackoverflow?
warren

Respuestas:

1

Del problema con el montón, win32 error 487 :

Cada aplicación Cygwin obtiene un área de almacenamiento dinámico especial para almacenar cosas que se heredan de los procesos secundarios. P.ej. todas las estructuras de descriptor de archivos se almacenan en esa área de montón (llamada "cygheap"). El cygheap tiene espacio para al menos 4000 estructuras de descriptores de archivos. Pero, esa es la pista, es de tamaño fijo. El cygheap no puede crecer. Su tamaño está reservado al inicio de la aplicación y sus bloques se comprometen bajo demanda.

Por alguna razón, su aplicación de servidor necesita todo el espacio de cygheap cuando se ejecuta en las condiciones descritas.

Se puede encontrar una posible solución en Cambiar la memoria máxima de Cygwin :

El montón de Cygwin es extensible. Sin embargo, comienza en un tamaño fijo y los intentos de extenderlo pueden ejecutarse en la memoria que Windows ha asignado previamente. En algunos casos, este problema se puede resolver agregando una entrada en la sección HKEY_LOCAL_MACHINE (para cambiar el límite para todos los usuarios) o HKEY_CURRENT_USER (solo para el usuario actual) del registro.

Agregue el valor DWORD heap_chunk_in_mb y configúrelo en el límite de memoria deseado en MB decimales. Se prefiere hacer esto en Cygwin utilizando el programa regtool incluido en el paquete Cygwin. (Para obtener más información sobre regtool u otras utilidades de Cygwin, consulte la sección llamada "Utilidades de Cygwin" o use la opción --help de cada utilidad). Siempre debe tener cuidado al usar regtool, ya que dañar el registro de su sistema puede resultar en un inutilizable sistema. Este ejemplo establece el límite de memoria en 1024 MB:

regtool -i set /HKLM/Software/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygwin

Salga de todos los procesos en ejecución de Cygwin y reinícielos. La memoria se puede asignar hasta el tamaño del espacio de intercambio del sistema menos cualquier tamaño de los procesos en ejecución. El intercambio del sistema debe ser al menos tan grande como la RAM instalada físicamente y puede modificarse en la categoría Sistema del Panel de control.

No estaría de más asegurarse de que el tamaño máximo del archivo de intercambio de Windows sea lo suficientemente grande.

Y, por cierto, ¿cuánta RAM tienes en tu computadora?

harrymc
fuente
1.5 gb de RAM ... el archivo de intercambio es definitivamente lo suficientemente grande ... veré si puedo encontrar dónde se definen estas configuraciones en nuestro proceso de creación ... no hay un entorno cygwin real ejecutándose en tiempo de compilación ... todo
ejecutables de
@espais: Estás utilizando la marca cygwin. ¿Fue esto por intención? ¿O puedes cambiar a la marca de Microsoft?
harrymc
nop ... usando las herramientas GNU es el estándar de servicio ... lo que estaba recibiendo a todos fue que exe se llaman en un entorno no-cygwin (a través de algún archivo por lotes de secuencias de comandos creativa)
the_e
@espais: ese entorno creativo no asigna suficiente espacio de almacenamiento dinámico para los ejecutables de cygwin. Por alguna razón, el problema es más agudo con VS2010 Express. Debe reparar ese entorno, o usar otro puerto de Linux, o usar las utilidades de Microsoft.
harrymc
@harry: ¿estás también en StackOverflow? Publiqué esta pregunta allí también ... si desea responder por representante allí, puede responderla ... stackoverflow.com/questions/3008217/…
the_e
0

Quizás sea un problema con la expresividad versus el profesionalismo de la versión. Puede intentar probar la versión de prueba de Professional .

Neal
fuente
3
Eso no tendría ningún sentido.
SLaks