Desajuste de la base del cygheap de error de Cygwin/Git detectado
ssh (11)
He instalado dos servidores de Windows con las últimas versiones de cygwin y git, y estoy intentando clonar el repositorio de git de S1 a S2. Puedo pasar de S2 a S1 con éxito usando las teclas RSA, pero cuando hago esto: git clone "ssh: // root @ S1 / path / to / my / repo" Devuelve este resultado:
Cloning into /cygdrive/c/program files/apache software foundation/apache2.2/htdocs/myfolder...
2 [main] git 2004 C:/cygwin/lib/git-core/git.exe *** fatal error - cygheap base mismatch detected - 0x61242860/0x6123790.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search fro cygwin1.dll using the WIndows Start->Find/Search facility and delete all bu the most recent version. The most recent version *should* reside in x:/cygwin/bin, where ''x'' is the drive on which you have installed the cygwin distrubtion. Rebooting is also suggested if you are unable to find another cygwin DLL.
--5 more errors like that one --
remote: Counting objects: 3275, done.
remote: Compressing oobjects: 100% (3106/3106), done.
fatal: write error: Broken pipe
Entonces seguí estas instrucciones, pero no tuve suerte. ¿Alguna sugerencia?
No Cygwin, no GitHub
Empecé a experimentar esto recientemente, y ninguna de las respuestas anteriores se aplicó a mi caso: no tenía instalado Cygwin ni GitHub.
En cambio, en mi caso, una característica de seguridad de Windows, Aleatorización de diseño de espacio de direcciones o ASLR creó este problema . Esto está desactivado por defecto para los programas que no se marcan como compatibles.
Sin embargo, he habilitado ASLR para todos los programas para mayor seguridad. La desventaja es que los comandos de git no funcionan ahora.
Solución
La solución fue excluir ASLR para los archivos ejecutables de git. Como hay bastantes de ellos, tuve que usar PowerShell como administrador :
Get-Item -Path "C:/Program Files/Git/usr/bin/*.exe" | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }
¿Obtiene este error con otros comandos? Con git --version
?
Intente volver a ejecutar Cygwin setup.exe
y cygwin1.dll
instalar su cygwin1.dll
(el paquete es "cygwin", en "Base") y su paquete git (paquete "git" en "Devel") y reinicie.
Como se trata de un desajuste de base, podrías intentar volver a establecer la base:
git rebase <branch>
EDIT: encontré la solución.
TL; DR: vaya a la carpeta GitHub AppData, elimine la carpeta PortableGit y reinicie GitHub
- Cerrar GitHub
- Navegue a la carpeta GitHub AppData:
C:/Users/[username]/AppData/Local/GitHub
- Elimine la carpeta que comienza con
PortableGit
y termina en una cadena aleatoria de letras y números - Reinicie GitHub. ¡Volverá a extraer los dlls y el problema debería solucionarse!
(Original "respuesta") Probé un montón de cosas, y no tengo idea de qué funcionó realmente al final. Reinicí GitHub, reinicié mi computadora, desinstalé y reinstalé GitHub, desinstalé varios otros programas que había instalado recientemente pero terminé sin necesitar, eliminé la carpeta GitHub en el directorio AppData / Local, descargué e instalé cygwin, y posiblemente algunas otras cosas que Olvidando
El último intento fue encontrar todos los archivos cygwin1.dll en File Explorer y cambiarles el nombre a cygwin1x.dll y luego reiniciar mi computadora. Después de que hice eso, funcionó de nuevo.
Estoy arriesgándome a adivinar aquí, pero voy a decir que la descarga e instalación de Cygwin y luego reiniciar mi computadora hicieron el truco.
En mi caso, la RUTA en las variables de entorno era incorrecta. Moví el cygwin un poco antes en la ruta (asegurándome de que esté configurado antes de la ruta git). De esa forma, cygwin dll estaba a favor de git dll.
Por ejemplo; La ruta de C:/Program Files/Git/usr/bin;C:/cygwin/bin;...
Se cambió a C:/cygwin/bin;C:/Program Filenter code herees/Git/usr/bin;...
El entorno era Win7x86 y se requería un reinicio para usar esa ruta actualizada.
En mi caso, reiniciar la computadora no funcionó.
Finalmente descubrí que se debía a un conflicto entre una instalación de Msys (instalada cuando instalé las utilidades de línea de comandos git). Si la ruta del sistema contiene algún directorio con una versión de Msys, elimine esas entradas de ruta y vuelva a intentarlo. Parece que cygwin intenta ejecutar los ejecutables desde la instalación de Msys, y el .dll detecta una coincidencia errónea.
No mencionas esto en tu declaración del problema, pero supongo que estás ejecutando una versión de Windows de 64 bits. Cygwin tiene problemas al ejecutar Windows de 64 bits, especialmente con programas grandes. Creo que esto se debe a problemas de administración de memoria dentro de la biblioteca de soporte cygwin1.dll. Parece que está haciendo la suposición insoportable de que siempre y para siempre se asignará a la misma dirección en cada proceso, por lo que está bien que mantenga cosas específicas del proceso (como direcciones de montón) en variables globales de todo el sistema.
En mi abundante tiempo libre, he estado tratando de rastrear las partes problemáticas. Mientras tanto, podrías intentar volver a basar cygwin1.dll. Ten en cuenta que es mucho más complicado de lo que debe ser, incluso más complicado que volver a basar todo lo demás.
Para mí, el problema era la existencia de una carpeta C: / cygwin64 anterior. Renombrar esta carpeta no fue suficiente. Cuando borré esta carpeta, el problema desapareció. No necesité reiniciar después de eliminar la carpeta C: / cygwin64 tampoco.
Para mí, la causa fue que git no se instaló a través de cygwin, aunque la descarga regular de git-scm. Una vez que ejecuté la configuración de cygwin, agregué git, funcionó perfectamente.
Sé que este es un hilo viejo, pero como es el primer resultado sobre este tema, me gustaría agregar mi resolución con la esperanza de que ayude a alguien más.
Primero, ejecute cygcheck PROGRAMM
, en mi caso, tuve un problema con tar.exe
así que ejecuté: cygcheck tar
el comando cygcheck
muestra qué DLL se utilizan.
Todo parecía correcto en cygcheck
, así que decidí, en base a los comentarios de Jim Schneider, pasar de la versión de 64 bits de Cygwin a la versión de 32 bits, que finalmente resolvió mi problema.
Yo tuve el mismo problema.
Acabo de reiniciar mi PC y funcionó de nuevo.
No ayuda a encontrar la razón del problema, pero al menos puede seguir trabajando.