Git‘s nice Subversion (SVN) integration is one of the reasons I switched to using it within our company for my own revision control besides our official repository. Unfortunately, upgrading cygwin broke my system once again:
$ git svn dcommit
6 [main] perl 4760 C:\cygwin\bin\perl.exe: *** fatal error - unable to remap C:\cygwin\lib\perl5\site_perl\5.8\cygwin\auto\SVN\_Core\_ Core.dll to same address as parent(0x260000) != 0x990000 84 [main] perl 3224 fork: child 4760 - died waiting for dll loading, errno 11 panic: MUTEX_LOCK (45) [util.c:2331] at /usr/bin/git-svn line 787. panic: MUTEX_LOCK (45) [op.c:352].
The reason behind this behavior is a huge difference in the way processes and threads and libraries are created/handled on Windows and Linux. git-svn
relies on perl within cygwin and several perl libraries that use the same base-address for libraries internally. Of course, no two libraries can be loaded to the same base-address at the same time.
Long explanation, short way to fix the problem:
- Quit all cygwin processes
- Start ash (<cygroot>\bin\ash.exe) (<edit>Use “Run as Administrator…”</edit>)
- Execute /usr/bin/rebaseall
Voilla, that’s all. git-svn should work again.
Thank you very much for this! I tried googling for my errors and I couldn’t find anything but after just searching for git svn windows I happened upon this post. My exact issue, solved!
Glad it helped you!
Thanks! That helped me getting git-svn working.
Great, thanks for documenting this.
Thank you so much. It did worked for me 🙂
FYI: ash needs to run as Administrator when UAC is on.
This only works for me in 1 of 10 tries.
+1 on running as an Administrator. It didn’t complain about running without admin rights, but git didn’t continue working until I did so.
Thanks for this tip. It worked great for me.
the first step:Quit all cygwin processes
How can I quit all cygwin processes and services?
rebaseall: only ash or dash processes are allowed during rebasing
Exit all Cygwin processes and stop all Cygwin services.
Execute ash (or dash) from Start/Run… or a cmd or command window.
Execute ‘/bin/rebaseall’ from ash (or dash).
@ChuckLu
You need to find them in Task Manager and end the processes. They are sometimes hard to identify, best thing is to reboot the system and not start anything else except the ash.exe required for rebasing. Make sure that there are no Cygwin-based tasks in your auto-start configuration of Windows.
There have been huge improvements in Cygwin and rebasing since this article has been written 8 years ago (2007), rebasing is now done almost automatically (if possible) after any run of setup.exe.