Tengo un .sh
script en el que hago doble clic para que git lo ejecute para Windows.
Ahora necesito (imagemagick) convert
de cygwin (que he instalado) y lo llamo con su ruta absoluta /c/cygwin64/bin/convert.exe
, pero obtengo:
error fatal: se detectó una falta de coincidencia en la base de cygheap. Este problema probablemente se deba al uso de versiones incompatibles de la DLL de cygwin.
Ajustar la convert
llamada real en una llamada de cygwin bash, o incluso en una cmd.exe
llamada, no ayuda. Esto es un poco extraño porque a veces uso ejecutables de cygwin directamente en .cmd
scripts, y eso siempre funcionó.
¿Que puedo hacer? Se preferiría una solución que mantenga mi programa limitado a un archivo.
(Sé que probablemente podría simplemente instalar una imagen nativa de Windows. Pero al día siguiente necesito otra herramienta cygwin en un git-for-Win-Shellscript ... también, me gustaría entender qué está pasando aquí. Y, sí, Probablemente haré obsoleto git para Windows en mi lugar de trabajo , si es posible)
Respuestas:
error fatal: se detectó una falta de coincidencia en la base de cygheap.
Este error se debe a que la ruta de Git para Windows es incompatible con Cywin.
Ambos usan
/bin
y/usr/bin
pero estos se asignan a directorios diferentes (porque usan tablas de montaje diferentes).Cywin espera encontrar el dll en
/usr/bin/cygwin1.dll
(y no se encuentra en Git para Windows)Cuando ejecuta explícitamente cualquier comando de Cygwin en un
bash
shell de Git para Windows, Cygwin no puede encontrar su dll y genera el mensaje de error anterior.Observe a continuación que la asignación de montaje para
/
es diferente.Git para Windows:
Cygwin:
No hay solución, aparte de no mezclar y combinar utilidades derivadas de cygwin. Elige uno y quédate con él.
fuente
Tuve el mismo problema en Windows 10. Me preguntaba cómo es posible tener muchas versiones de CygWin, aunque no puedo encontrar ni un solo cygwin.dll. Extensiones Git-> Stash y Git Bash se bloquearon con diferentes mensajes de error. La solución está aquí: vaya a Windows Defender -> Aplicación y control del navegador -> Protección contra exploits. Y apague tres opciones con ASLR. Debe reiniciar su sistema a partir de entonces, ¡pero realmente ayuda!
fuente