From octave-maintainers-request at bevo dot che dot wisc dot edu Tue Nov 18 15:29:37 2003 Subject: "unable to remap" on Windows From: Paul Kienzle To: octave-maintainers at bevo dot che dot wisc dot edu Date: Tue, 18 Nov 2003 16:29:18 -0500 Hi, I'm getting the following error on WinXP (octave-forge version of octave-2.1.50): >> listen (1515) ...\octave.exe: *** unable to remap ...\fft.oct to same address as parent -- 0x1720000 6 [main] octave 980 sync_with_child: child 3236(0x640) died before initialization with status code 0x1 9764 [main] octave 980 sync_with_child: *** child state child loading dlls fork : No children The following comment from the dllhelpers page seems relevant http://www.neuro.gatech.edu/users/cwilson/cygutils/dll-stuff/README Removed the '-Wl,--enable-auto-image-base' option. This sometimes causes problems with the heap-replication-in-child function of cygwin1.dll; cygwin expects that cygwin1.dll will be at the same address in both parent and child. With auto-image-base, it is possible that the auto-generated base address will conflict with the cygwin1.dll, and the loader will either relocate your DLL or the cygwin1.dll in the child's address space. Often, it will choose to relocate cygwin1.dll === then things go boom. Therefore, you should choose: 1) just let ld use the default base address of 0x10000000 for your DLLs. This means that all of your DLL's will conflict with each other, and the windows runtime loader will have to relocate them. However, this operation is relatively inexpensive on windows, and I don't *think* the windows runtime loader will EVER "bump" a DLL with a different desired base address, when trying to load other DLLs that share a common desired base address. That is: cygwin1.dll : desired BA = 0x61000000 my_dll1.dll : desired BA = 0x10000000 my_dll2.dll : desired BA = 0x10000000 So, my_dll1 and/or my_dll2 will have to be relocated. But, I posit that the windows loader will NOT choose an address that conflicts with the range desired by cygwin1.dll -- because cygwin1.dll has a different desired BA than (my_dll1 & my_dll2). This is the option I chose to use. 2) Explicitly specify a base address for every DLL you build: -Wl,--base-address=0xXXXXXXXX. Be careful! Date: 2001-09-19, gcc 2.95.3 Maybe we should remove the --enable-auto-image-base from our own builds. Anyone with cygwin experience care to comment? Paul Kienzle pkienzle at users dot sf dot net