Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

subversion commit hook fails with cygwin

Tags:

svn

cygwin

We have some custom subversion pre and post commit hooks that work fine on our production server.

For developer testing I am using cywgin. Up until recently, the commit hooks were also working fine.

However, after running a cygwin update, the hooks are now failing with (newlines added for clarity):

  0 [main] svn 14820 child_info_fork::abort: 
  C:\cygwin\bin\cygcrypto-1.0.0.dll: Loaded to different address: 
  parent(0x440000) != child(0x590000)

Has anyone seen anything similar?

like image 200
toolkit Avatar asked Feb 18 '23 01:02

toolkit


1 Answers

The problem here is a fork failure: Subversion is attempting to fork a new process, and Windows is loading the new process with an unexpected memory layout. This is one of the fundamental problems Cygwin attempts to solve: Linux programs expect that when spawning a new process, the new process will have the same memory layout as the old one; Windows actively changes the memory layout whenever a new process is started.

The documented solution is in the Cygwin FAQ.

The short version is you need to do the following:

  • Exit all your Cygwin processes. That means closing all your MinTTY windows, exiting any X servers you have running, etc. Check task manager.
  • Go to Start > Run (or hit Win+R), and run C:\cygwin\bin\dash.
  • In the window that appears, type /bin/rebaseall and hit Return.
  • Go make yourself a coffee.

As you noted, reinstalling will also work; that's because doing a reinstall will run a limited Cygwin rebase in the background.

like image 79
me_and Avatar answered Feb 27 '23 17:02

me_and