Ganesh kudva
Ganesh kudva

Reputation: 1040

Cygwin error: "child_info_fork::abort: Loaded to different address:"

I am trying to build my software using cygwin-x86(32 bit version) on Windows-7.
Cygwin-x64(64 bit) works perfectly fine on the same machine. I want to build 32-bit executable.
Whenever I try cygwin-x86, I get the following errors:

[main] make 7780 child_info_fork::abort: C:\cygwin\bin\cygiconv-2.dll: Loaded to different address: parent(0x440000) != child(0x5F0000)
make: fork: Resource temporarily unavailable

I have checked this thread Cygwin Error

I have already tried everything mentioned in there, but I still continue to face the same issue.
Whenever i try /usr/bin/rebaseall -v or cd /usr/bin && ./rebaseall -v as mentioned in the step 7 of the accepted answer in the above mentioned thread, I get this error:

/usr/x86_64-pc-cygwin/sys-root/usr/bin/cygvtv_stubs-0.dll: skipped because wrong machine type. /usr/x86_64-pc-cygwin/sys-root/usr/bin/cygz.dll: skipped because wrong machine type.
Segmentation fault (core dumped)

I get this wrong machine type error for a lot of other .dll's as well.
As mentioned earlier I have cygwin-64 installed on my machine & working as expected. But while running rebaseall it is somehow looking for x86-64-pc-cygwin instead of 32 bit version.

Upvotes: 22

Views: 24710

Answers (6)

Jay Libove
Jay Libove

Reputation: 1

I have recently spent hours on this. Just one of my systems had had a never-ending "Cygwin can't fork" problem. And the answer turned out to be well-known, but I think maybe not a Cygwin FAQ. Mandatory ASLR breaks Cygwin fork. And on that one out of several of my systems, for some reason sometime in the past, I had turned on Mandatory ASLR (Windows Settings -> Exploit protection). Ouch. Ouch, ouch, ouch. Also, ouch. So, if all else fails, and your Cygwin can't fork, check your Windows Mandatory ASLR setting. Also, ouch.

Upvotes: 0

user1767316
user1767316

Reputation: 3651

For me, the solution was to remove the .new file extention of the libs from c:\cygwin64\bin\

I had the same problem using git. various dlls depending on the git command used where included in the error message stating that it was loaded to "different adress".

In fact a corporate antivirus or a loaded program had probably prevent un update during the rebase phase while installing a new program (git-svn in my case) some required libraries where not installed but cleverly left in the target with the .new file extention.

I just had to remove the .new extention (and rename the original lib to .old) to solve the problem.

In my case the list of lib involved was:

cygcrypto-1.1.dll
cyggcc_s-seh-1.dll
cygintl-8.dll
cygwin1.dll

Upvotes: 0

caduceus
caduceus

Reputation: 1838

Could also be caused by this update https://support.microsoft.com/en-us/help/4561616/windows-10-update-kb4561616

Upvotes: 2

Diomidis Spinellis
Diomidis Spinellis

Reputation: 19385

The problem can also be triggered by an anti-virus program. (I saw it happening with Avast.) You can test if this is the cause by disabling it.

Upvotes: 7

aanhouden
aanhouden

Reputation: 1

You can also kill each of the latest process of ash, dash or bash that was forked, setup.exe will simply skip this script and continue with the rest. I had to kill about 10-20 of them, mostly in latex postinstall scripts.

Upvotes: 0

matzeri
matzeri

Reputation: 8496

The thread is obsolete.

run /usr/bin/rebase-trigger, close all cygwin processes and run again setup-x86.exe. Also without installing anything will execute a rebase for you.

You can also specify the option full.

Additional note: The most likely cause of fork problems on 32 bit system are too many programs and libraries installed.

for example: /usr/x86_64-pc-cygwin/sys-root/usr/bin/cygz.dll

belongs to cygwin64-zlib a cross library for building cygwin64 programs from cygwin32. Do you really need it ? If not, as I suspect, remove all cywgin64 packages .

Upvotes: 17

Related Questions