This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

mmap bug on Windows 9x


On Windows 9x/ME different calls to mmap sometimes produce the same
address (without that memory being unmapped in the meantime, at least
not by application code).  Here's a trace of the application calls to
mmap (on WME):

try mmap($0, $400038, ..., MAP_ANON, ...); success, address=$83950000
try mmap($83950000, $2cfd0, ..., MAP_FIXED|MAP_FILE, imagefile, 0); failed: Not enough core
try mmap($83d52000, $400038, ..., MAP_ANON, ...); success, address=$83950000
try mmap($83d52000, $4000, ..., MAP_ANON, ...); success, address=$83d51000
try mmap($83d56000, $4000, ..., MAP_ANON, ...); success, address=$83d55000
try mmap($83d5a000, $3c00, ..., MAP_ANON, ...); success, address=$83d59000
try mmap($83d5e000, $3a00, ..., MAP_ANON, ...); success, address=$83466000
try mmap($8346b000, $40000, ..., MAP_ANON, ...); success, address=$83d60000
try mmap($83da1000, $40000, ..., MAP_ANON, ...); success, address=$83d60000

Note that the last two calls produce the same address.  This happens
with cygwin1.dll versions 1.5.5-1 and 1.5.10-3 (and probably also with
1.3.22-1).

On Windows 2000 (with cygwin1.dll 1.3.22) the same application
produces the following trace:

try mmap($0, $400038, ..., MAP_ANON, ...); success, address=$650000
try mmap($650000, $2cfd0, ..., MAP_FIXED|MAP_FILE, imagefile, 0); failed: Value too large for defined data type
try mmap($a52000, $400038, ..., MAP_ANON, ...); success, address=$a60000
try mmap($e62000, $4000, ..., MAP_ANON, ...); success, address=$a51000
try mmap($a56000, $4000, ..., MAP_ANON, ...); success, address=$a55000
try mmap($a5a000, $3c00, ..., MAP_ANON, ...); success, address=$a59000
try mmap($a5e000, $3a00, ..., MAP_ANON, ...); success, address=$e61000
try mmap($e66000, $40000, ..., MAP_ANON, ...); success, address=$e70000
try mmap($eb1000, $40000, ..., MAP_ANON, ...); success, address=$eb0000

and everything works fine.

In this posting I just want to check if the bug is already known.  If
not, I will condense the application to something that exhibits the
bug.  Or, if you feel adventurous, you can deal with the full
application:
http://www.complang.tuwien.ac.at/forth/gforth/gforth-0.6.2.tar.gz
(also available from GNU mirrors); you get the trace output above if
you build gforth with gcc-3.3 and call it with --debug.

Thanks for your work on Cygwin.

- anton

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]