This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
problem with mmap in cygwin 1.1.8
- To: cygwin at cygwin dot com
- Subject: problem with mmap in cygwin 1.1.8
- From: Rhet Turnbull <rhettbull at yahoo dot com>
- Date: Mon, 2 Apr 2001 09:50:48 -0700 (PDT)
- Reply-To: rhet at turnbull dot net
Hello all. I've recently updated my system to cygwin
1.1.8 and gcc 2.95-3.2. I had been running cygwin
1.1.7 and gcc 2.95.2-6. The following code (which
calls mmap) worked fine under 1.1.7 but now mmap fails
with errno = 13, "Permission denied." (Actually, the
strace shows: "geterrno_from_win_error: unknown
windows error 1006, setting errno to 13")
I rolled back to the previous setup just to double
check and the call to mmap worked fine. Attached is
the broken code, some cygcheck output, and strace
output. I'm running Windows 2000 Pro, SP1. Any
ideas?
--Rhet
int create_files()
{
int i;
int fd;
char *p;
char fname[1024];
long size;
int perms;
size = get_file_size();
perms = 0666;
for (i=0;i<NUMALTBINS;i++)
{
memset(fname,'\0',1024);
sprintf(fname,"%s/csealt%02d.map",FILEPATH,i);
printf("creating file %s with perms
%03o\n",fname,perms);
//create and open the file
if ((fd = open(fname, O_RDWR | O_CREAT |
O_TRUNC, perms)) < 0)
{
fprintf(stderr,"error creating file\n");
return -1;
}
if ((p = mmap(0,(size_t) size,
PROT_READ | PROT_WRITE, MAP_FILE |
MAP_SHARED, fd, 0)) == (caddr_t) -1)
{
fprintf(stderr,"mmap returned error\n");
#ifdef DEBUG
fprintf(stderr,"errno is %d, error is
%s\n",errno,strerror(errno));
#endif
return -1;
}
init_file(p);
//unmap and close
munmap(p,(size_t)size);
close(fd);
}
return 0;
}
Here's my DLL info from cygcheck:
Cygwin DLL version info:
dll major: 1001
dll minor: 8
dll epoch: 19
dll bad signal mask: 19005
dll old termios: 5
dll malloc env: 28
api major: 0
api minor: 34
shared data: 3
dll identifier: cygwin1
mount registry: 2
cygnus registry name: Cygnus Solutions
cygwin registry name: Cygwin
program options name: Program Options
cygwin mount registry name: mounts v2
cygdrive flags: cygdrive flags
cygdrive prefix: cygdrive prefix
cygdrive default prefix:
build date: Wed Jan 31 10:08:38 EST 2001
shared id: cygwin1S3
Here's some strace output:
100 49056 [main] cse_bin 1220 _open: open
(/home/rhet/csebin/test/csealt00.map, 0x602)
113 49169 [main] cse_bin 1220
dtable::build_fhandler: some disk file - cb 56, fd 3,
fh 0x1A0205B0
101 49270 [main] cse_bin 1220
fhandler_disk_file::open:
(/home/rhet/csebin/test/csealt00.map, 0x602)
105 49375 [main] cse_bin 1220
mount_info::conv_to_win32_path: conv_to_win32_path
(/home/rhet/csebin/test/csealt00.map)
104 49479 [main] cse_bin 1220
normalize_posix_path: src
/home/rhet/csebin/test/csealt00.map
100 49579 [main] cse_bin 1220
normalize_posix_path:
/home/rhet/csebin/test/csealt00.map =
normalize_posix_path
(/home/rhet/csebin/test/csealt00.map)
106 49685 [main] cse_bin 1220
mount_info::conv_to_win32_path:
c:\Turnbull\cyghome\rhet\csebin\test\csealt00.map(rel),
c:\Turnbull\cyghome\rhet\csebin\test\csealt00.map(abs)
0xA(flags) = conv_to_win32_path
(/home/rhet/csebin/test/csealt00.map)
275 49960 [main] cse_bin 1220 symlink_info::check:
GetFileAttributesA
(c:\Turnbull\cyghome\rhet\csebin\test\csealt00.map)
failed
126 50086 [main] cse_bin 1220
geterrno_from_win_error: windows error 2 == errno 2
101 50187 [main] cse_bin 1220 symlink_info::check:
0 = symlink.check
(c:\Turnbull\cyghome\rhet\csebin\test\csealt00.map,
0x244F319) (0xA)
225 50412 [main] cse_bin 1220 symlink_info::check:
not a symlink
119 50531 [main] cse_bin 1220 symlink_info::check:
0 = symlink.check
(c:\Turnbull\cyghome\rhet\csebin\test, 0x244F319)
(0x0)
287 50818 [main] cse_bin 1220 path_conv::check:
GetVolumeInformation(c:\) = OK,
full_path(c:\Turnbull\cyghome\rhet\csebin\test\csealt00.map),
set_has_acls(0)
142 50960 [main] cse_bin 1220 fhandler_base::open:
(c:\Turnbull\cyghome\rhet\csebin\test\csealt00.map,
0x602)
286 51246 [main] cse_bin 1220 fhandler_base::open:
176 = CreateFileA
(c:\Turnbull\cyghome\rhet\csebin\test\csealt00.map,
0xC0000000, 0x7, 0x6108517C, 0x2, 0x80, 0)
159 51405 [main] cse_bin 1220 fhandler_base::open:
filemode set to binary
110 51515 [main] cse_bin 1220 fhandler_base::open:
1 = fhandler_base::open
(c:\Turnbull\cyghome\rhet\csebin\test\csealt00.map,
0x602)
133 51648 [main] cse_bin 1220
fhandler_disk_file::open: 1 = fhandler_disk_file::open
(c:\Turnbull\cyghome\rhet\csebin\test\csealt00.map,
0x602)
110 51758 [main] cse_bin 1220 _open: 3 = open
(/home/rhet/csebin/test/csealt00.map, 0x602)
114 51872 [main] cse_bin 1220 mmap: addr 0, len
414489600, prot 3, flags 1, fd 3, off 0
333 52205 [main] cse_bin 1220
seterrno_from_win_error:
/cygnus/netrel/src/cygwin-1.1.8-2/winsup/cygwin/mmap.cc:690
errno 1006
110 52315 [main] cse_bin 1220
geterrno_from_win_error: unknown windows error 1006,
setting errno to 13
102 52417 [main] cse_bin 1220
fhandler_disk_file::mmap: -1 = mmap():
CreateFileMapping failed with Win32 error 1006
__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail.
http://personal.mail.yahoo.com/?.refer=text
--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple