delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2007/12/17/13:10:33

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Message-ID: <4766BC34.9060203@4raccoons.com>
Date: Mon, 17 Dec 2007 10:13:08 -0800
From: Wayne Christopher <wayne AT 4raccoons DOT com>
User-Agent: Thunderbird 1.5.0.4 (X11/20060516)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: mmap failing
References: <47616D31 DOT 7090002 AT 4raccoons DOT com> <20071213175934 DOT GB25863 AT calimero DOT vinschen DOT de> <476185AF DOT 5000906 AT 4raccoons DOT com> <20071214111508 DOT GD25863 AT calimero DOT vinschen DOT de> <20071214134147 DOT GG25863 AT calimero DOT vinschen DOT de> <20071214135239 DOT GJ25863 AT calimero DOT vinschen DOT de> <ba40711f0712140634u6c5d268fxfb49544d5b6927ba AT mail DOT gmail DOT com> <20071214172454 DOT GL25863 AT calimero DOT vinschen DOT de> <4762FCCD DOT 6030804 AT 4raccoons DOT com> <20071216110441 DOT GC18860 AT calimero DOT vinschen DOT de>
In-Reply-To: <20071216110441.GC18860@calimero.vinschen.de>
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

--------------000700040600010608030807
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

My test program is attached.  This example works but in my real program 
the same write+close+mmap sequence did not.

It appears that calling fsync before the close sometimes avoids the 
error but not always.

This is Cygwin 1.5.24(0.156/4/2).

Any thoughts?  Thanks,

    Wayne

Corinna Vinschen wrote:
> On Dec 14 13:59, Wayne Christopher wrote:
>   
>> I have a 268MB file open for writing.  I close it and then
>> immediately try to mmap() it, and a get ENOMEM.  However I do have the
>> VM space available and can malloc() the size of the file right after the 
>> failure.  Also, I have mmap()'ed other similar files in the same program 
>> before this, but these had not just been closed.
>>
>> My initial guess was that it was timing related, but if I wait for 5
>> seconds and try again I still get the failure.
>>
>> I wasn't able to duplicate it in a small example since my app has a bunch 
>> of threads and is doing other stuff at the same time.
>>
>> Any suggestions for solutions or workarounds?
>>     
>
> Not without testcase and version information.  Is that under 1.5.24-2
> or 1.5.25-x?  Could you test if the result differs between these two
> versions?  If so, how?
>
>
> Corinna
>
>   


--------------000700040600010608030807
Content-Type: text/x-c++src;
 name="mmcheck.c"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="mmcheck.c"

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/unistd.h>

#define SIZE 268000000

main()
{
    char* fname = "test_file";
    char* data;
    int fd, i;
    struct stat sb;
    caddr_t base;
    
    data = malloc(SIZE);
    fd = open(fname, O_RDWR|O_CREAT, 0666);
    assert(fd >= 0);
    
    i = write(fd, data, SIZE);
    assert(i == SIZE);
    close(fd);

    i = stat(fname, &sb);
    assert(i >= 0);
    
    assert(SIZE == sb.st_size);
    
    fd = open(fname, O_RDONLY, 0);
    assert(fd >= 0);
    
    base = (caddr_t) mmap(NULL, SIZE, PROT_READ, MAP_SHARED, fd, 0);
    printf("base = %ld\n", (long) base);
    if (MAP_FAILED == base)
	perror("mmap");
    
    exit(0);
}


--------------000700040600010608030807
Content-Type: text/plain; charset=us-ascii

--
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/
--------------000700040600010608030807--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019