我有cygwin和git.我正试图用git来提交svn - git svn dcommit.但它失败了,奇怪的错误:
$ git svn dcommit
4 [main] perl 5536 C:\cygwin\bin\perl.exe: *** fatal error - unable to remap \\?\C:\cygwin\lib\perl5\5.10\i686-cygwin\auto\List\Util\Util.dll to same address as parent: 0xA20000 != 0xB40000
Stack trace:
Frame Function Args
0088B508 6102749B (0088B508, 00000000, 00000000, 00000000)
0088B7F8 6102749B (61177B80, 00008000, 00000000, 61179977)
0088C828 61004AFB (611A136C, 6125AB3C, 00A20000, 00B40000)
End of stack trace
我该如何解决?谢谢.
PS 我的系统是Windows 7 64位.
更新
reabase帮助.但是我必须在执行rebase后重新启动.
Von*_*onC 20
当您使用Cygwin时,有时会出现这样的错误
unable to remap some.dll to same address as parent someapp 4292 fork:
child 3964 - died waiting for dll loading, errno 11"
Run Code Online (Sandbox Code Playgroud)
然后你需要运行rebaseall.
为了运行它,关闭所有Cygwin窗口,执行<cygwin_home>\bin\ash.exe,它将打开一个新的控制台窗口
执行rebaseall.
一旦完成,您可以再次运行Cygwin而不会出现任何问题:-)
OP gor报告他必须重新启动以完成rebaseall工作.
Dan Molding在评论中提到:
我只想补充说,关闭所有Cygwin窗口可能还不够.
您应该确保所有Cygwin的进程和服务都将终止和/或停止(ps -a从ash应显示什么,但ash和ps)重订基期之前.
有关为何需要此解释,请参阅
fatal error - unable to remap to same address as parent:Cygwin,Ruby on Rails,系统调用那究竟发生了什么?
那么,在这种情况下,问题是Windows管理它们的方式的结果.dll.Windows使用
ASLR(地址空间布局随机化)来管理它.dll的.每次启动计算机时,它都会将您的dll加载到不同的内存区域.
如果这出现了问题,那么下次你找到它时.dll- 你可能会崩溃你的系统.或者如果你看错了地方,你可能会崩溃你的系统.
那么这个系统怎么能摆脱困境呢?好吧,运行你的cygwin安装程序会影响记录保存,特别是如果ASLR已经改变但是Cygwin持有旧版本(这可能在安装没有完成时发生).ASLR非常适合恶意软件或黑客防御.黑客无法
.dll在不崩溃系统的情况下不断为您的地址尝试新地址.
Joe*_*oel 13
我遇到了这个问题,但运行rebaseall无法解决问题.我试图运行git svn dcommit并看到我提到的重映射错误,无论我运行rebaseall和/或重启多少次.
这是我看到的样本.请注意对地址0x6FA00000的引用
$ git svn dcommit提交到844 [main] perl 1136 C:\ cygwin\bin\perl.exe:*致命错误 - 无法将C:\ cygwin\bin\cygdb-4.5.dll重新映射到与父级相同的地址:0x58B40000! =**0x6FA00000堆栈跟踪:帧
功能Args 0082B458 6102792B(0082B458,00000000,00000000,00000000)0082B748 6102792B(6117DC60,00008000,00000000,6117F977)0082C778 61004F3B(611A6FAC,61247BCC,58B40000,6FA00000)堆栈结束跟踪3 [main ] perl 4680 fork:child 1136 - 等待dll加载死亡,errno 11
我不认为这很重要,但我使用我公司的企业形象运行在Windows7 Enterprise 32位上.
我能够按照我在Chromium维基上找到的建议解决这个问题:
http://code.google.com/p/chromium/wiki/CygwinDllRemappingFailure
我使用来自cygwin的ListDlls.exe(http://technet.microsoft.com/en-us/sysinternals/bb896656.aspx)来捕获正在运行的进程中加载的DLL的输出,并为导致问题的地址进行grep'ed:
$ ./ListDlls.exe | tee foo
$ cat foo | grep 6fa000...
0x6fa00000 0x3c000 9.05.0005.9574 C:\ PROGRA~1\Sophos\SOPHOS~1\SOPHOS~1.DLL
这个匹配的Sophos Security提供的DLL加载地址,我的IT组默认运行在我们的机器上,这是导致失败的原因.rebaseall没有机会解决问题,因为Sophos提供的DLL不是cygwin的一部分.
Chromium维基说要选择一个小于导致问题的DLL的基地址,所以我选择了0x60000000.您可能必须选择不同的基址,具体取决于您可能看到的违规DLL.
我从cmd.exe提示符重新进行rebaseall,没有其他cygwin进程在运行.
c:\ cygwin\bin> ash/usr/bin/rebaseall -b 0x60000000
重新启动我的cygwin shell后,git svn dcommit工作了.
| 归档时间: |
|
| 查看次数: |
8787 次 |
| 最近记录: |