git svn - error under cygwin

后端 未结 4 2018
忘掉有多难
忘掉有多难 2021-02-05 08:32

I have cygwin and git. I\'m trying to commit with git to svn - git svn dcommit. But it fails with strange error:

$ git svn dcommit
      4 [main] perl 55         


        
4条回答
  •  轮回少年
    2021-02-05 09:03

    I was having this issue but running rebaseall wouldn't fix the problem. I was attempting to run git svn dcommit and seeing the remap errors mentioned no matter how many times I ran rebaseall and/or rebooted.

    Here's a sample of what I saw. Note the reference to address 0x6FA00000

    $ git svn dcommit Committing to 844 [main] perl 1136 C:\cygwin\bin\perl.exe: * fatal error - unable to remap C:\cygwin\bin\cygdb-4.5.dll to same address as parent: 0x58B40000 != **0x6FA00000 Stack trace: Frame
    Function Args 0082B458 6102792B (0082B458, 00000000, 00000000, 00000000) 0082B748 6102792B (6117DC60, 00008000, 00000000, 6117F977) 0082C778 61004F3B (611A6FAC, 61247BCC, 58B40000, 6FA00000) End of stack trace 3 [main] perl 4680 fork: child 1136 - died waiting for dll loading, errno 11

    I don't think it's important but I'm running on Windows7 Enterprise 32 bit using my company's corporate image.

    I was able to fix this following the advice I found on the Chromium wiki:

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

    I used ListDlls.exe (http://technet.microsoft.com/en-us/sysinternals/bb896656.aspx) from cygwin to capture output of DLLs loaded in running processes and grep'ed for the address causing issues:

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

    ...

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

    This matched load address of a DLL provided by Sophos Security which my IT group has running on our machines by default and was the cause of the failure. rebaseall didn't have a chance to fix the problem because the Sophos provided DLL isn't part of cygwin.

    The Chromium wiki said to choose a base address less than the DLL causing the issue so I picked 0x60000000. You may have to pick a different base address depending on the offending DLL you might see.

    I reran rebaseall from a cmd.exe prompt and no other cygwin processes running.

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

    After restarting my cygwin shell git svn dcommit worked.

提交回复
热议问题