This is the mail archive of the cygwin@cygwin.com 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]

problem with mmap in cygwin 1.1.8


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


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