Cygwin: readline lib loaded in different locations

Within cygwin, almost each unix command I type prints a warning message, takes time and eventually gives a correct result:

-bash-4.1$ ls
0 [main] bash 7468 child_info_fork::abort: cygreadline7.dll: Loaded to different address:
parent(0x320000) != child(0x3B0000)
-bash: fork: retry: Resource temporarily unavailable

What is the meaning of this warning?

Asked By: Philippe Blayo

||

Windows loads each dynamic library at the same address in every process. This interacts badly with Cygwin’s emulation of fork when there are different versions of a DLL in the parent and child process (i.e. when you upgraded a DLL between the time the parent started and the time the child started). Restart all your Cygwin processes after upgrading a library.

The Cygwin FAQ mentions “resource temporarily unavailable” as one of the error messages that can occur because of the way Windows handles process creation. The potential solutions it lists are:

  • Restart the process
  • Remove all applications known to conflict with Cygwin
  • Follow the instructions in /usr/share/doc/rebase/README to run rebaseall
Answered By: Yaakov
Categories: Answers Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.