git svn – error bajo cygwin

Tengo cygwin y git. Estoy intentando comprometerme con git a svn – git svn dcommit . Pero falla con un extraño error:

 $ git svn dcommit
       4 [main] perl 5536 C: \ cygwin \ bin \ perl.exe: *** error fatal - no se puede reasignar \\? \ C: \ cygwin \ lib \ perl5 \ 5.10 \ i686-cygwin \ auto \ List \ Util \ Util.dll a la misma dirección que el primario: 0xA20000! = 0xB40000
 Stack trace:
 Frame Args de funciones
 0088B508 6102749B (0088B508, 00000000, 00000000, 00000000)
 0088B7F8 6102749B (61177B80, 00008000, 00000000, 61179977)
 0088C828 61004AFB (611A136C, 6125AB3C, 00A20000, 00B40000)
 Fin del seguimiento de la stack

Cómo puedo arreglarlo ? Gracias.

PD: mi sistema es Windows 7 de 64 bits.

Actualizar

reabase ayudó. pero tuve que reiniciar después de ejecutar rebase.

¿Has rebaseall un rebaseall como se describe aquí ?

Cuando trabajas con Cygwin, a veces obtienes un error como este

 unable to remap some.dll to same address as parent someapp 4292 fork: child 3964 - died waiting for dll loading, errno 11" 

Entonces necesitarías ejecutar rebaseall.
Para ejecutarlo, cierre todas las windows de Cygwin, Ejecute <cygwin_home>\bin\ash.exe , se abriría una nueva window de console
ejecutar rebaseall allí.
Una vez que se haya completado, puedes volver a ejecutar Cygwin nuevamente sin ningún problema 🙂


El informe de OP Gor dijo que tenía que reiniciar para que rebaseall el rebaseall .
Dan Molding menciona en los comentarios:

Solo agregaré que cerrar todas las windows de Cygwin puede no ser suficiente.
Debe asegurarse de que todos los processs y services de Cygwin se terminen y / o se detengan ( ps -a de ash debería mostrar nada más que ash y ps ) antes de volver a basar .


rsenna informa en los comentarios :

Para get una explicación de por qué es necesario, consulte el fatal error - unable to remap to same address as parent : Cygwin, Ruby on Rails, llamadas al sistema

Entonces, ¿qué está pasando realmente?
Bueno, en este caso, el problema fue el resultado de la forma en que Windows administra sus .dll .

Windows usa ASLR (aleatorización de layout de espacio de direcciones) para administrar sus .dll . Carga tu dll en diferentes áreas de la memory cada vez que inicias tu computadora.
Si esto se sale de control, la próxima vez que busque ese .dll , puede bloquear su sistema. O si miras en el lugar equivocado, puedes colgar tu sistema.
Entonces, ¿cómo puede este sistema salir de golpe? Bueno, ejecutar su progtwig de installation de cygwin puede afectar el mantenimiento de loggings, especialmente si el ASLR ha cambiado, pero Cygwin está reteniendo una copy anterior (esto puede suceder cuando la configuration no se completa).

ASLR es excelente contra el malware o la defensa de piratas informáticos. Los hackers no pueden probar constantemente nuevas direcciones para su .dll sin bloquear su sistema.

Estaba teniendo este problema, pero ejecutar rebaseall no solucionaría el problema. Estaba intentando ejecutar git svn dcommit y ver los errores de reasignación mencionados sin importar cuántas veces ejecuté rebaseall y / o reinicié.

Aquí hay una muestra de lo que vi. Tenga en count la reference a la dirección 0x6FA00000

$ git svn dCommit Compromiso con 844 [main] perl 1136 C: \ cygwin \ bin \ perl.exe: * error fatal – no se puede reasignar C: \ cygwin \ bin \ cygdb-4.5.dll a la misma dirección que el elemento primario: 0x58B40000! = ** 0x6FA00000 Stack trace: Frame
Función Args 0082B458 6102792B (0082B458, 00000000, 00000000, 00000000) 0082B748 6102792B (6117DC60, 00008000, 00000000, 6117F977) 0082C778 61004F3B (611A6FAC, 61247BCC, 58B40000, 6FA00000) Fin del rastro de la stack 3 [principal] Perl 4680 tenedor: niño 1136 – murió esperando la carga dll, errno 11

No creo que sea importante, pero me estoy ejecutando en Windows7 Enterprise 32 bit utilizando la image corporativa de mi empresa.

Pude arreglar esto siguiendo los consejos que encontré en la wiki de Chromium:

http://code.google.com/p/chromium/wiki/CygwinDllRemappingFailure

Usé ListDlls.exe (http://technet.microsoft.com/en-us/sysinternals/bb896656.aspx) de cygwin para capturar el resultado de las DLL cargadas en processs en ejecución y grep'ed para la dirección que causa problemas:

$ ./ListDlls.exe | tee foo
$ cat foo | grep 6fa000

0x6fa00000 0x3c000 9.05.0005.9574 C: \ PROGRA ~ 1 \ Sophos \ SOPHOS ~ 1 \ SOPHOS ~ 1.DLL

Esta dirección de carga coincidente de una DLL proporcionada por Sophos Security que mi grupo de TI ejecuta en nuestras máquinas de manera pnetworkingeterminada y que fue la causa de la falla. rebaseall no tuvo la oportunidad de solucionar el problema porque el file DLL proporcionado por Sophos no forma parte de cygwin.

El wiki de Chromium dice que elija una dirección base menor que la DLL que causa el problema, así que elegí 0x60000000 . Es posible que deba elegir una dirección base diferente según la DLL infractora que pueda ver.

Volví a rebaseall desde un prompt de cmd.exe y no se están ejecutando otros processs de cygwin.

c: \ cygwin \ bin> ash / usr / bin / rebaseall -b 0x60000000

Después de reiniciar mi cygwin shell git svn dcommit funcionó.

Se enfrentó a problemas similares y no funcionó hasta que funcioné 1. rebaseall 2. perlrebase 3. peflagsall

ejecútelos todos para solucionar el problema

Las respuestas anteriores no dieron como resultado una solución confiable al problema de ejecutar cygwin git en Windows de 64 bits (Windows 7) para nuestro equipo. Publiqué una pregunta sobre el correo git y recibí esta respuesta de Pascal Obry:

Jon,

Este es un problema conocido. Desde hace mucho time salí del mundo de Windows, pero todavía tengo algunas notas para "arreglar" esto:

Del caparazón de ceniza (asegúrese de que ningún process de Cygwin todavía esté ejecutándose):

$ rebaseall

$ peflagsall

Prueba tu command nuevamente Si todavía no funciona, intente en su lugar: $ rebaseall -b 0x50000000 -o 0x80000 o -b 0xNNNN0000 donde NNNN es cualquier número hexadecimal entre 2000 y 7000. La opción -o dice dejar más espacio entre las DLL, también puede ayuda. Lo hizo en mi caso.

Si tiene curiosidad, consulte /usr/share/doc/Cygwin/rebase-3.0.README para get más información.

Ver también: http://www.spinics.net/lists/git/msg183753.html

Pascal también señaló en un seguimiento que:

… la parte más importante es ejecutar peflagsall, esta fue la manera de arreglarlo correctamente en Win7 IIRC.

Los resultados iniciales, pero no definitivos, sugieren que esta solución funciona mejor que las otras sugerencias documentadas aquí. Actualizaré esta publicación en aproximadamente una semana para indicar si esta receta es suficiente para get una solución permanente y confiable.