octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

"unable to remap" on Windows


From: Paul Kienzle
Subject: "unable to remap" on Windows
Date: Tue, 18 Nov 2003 16:29:18 -0500
User-agent: Mutt/1.2.5.1i

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
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]