From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16929 invoked by alias); 25 Jun 2003 18:30:55 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 19233 invoked from network); 25 Jun 2003 17:28:28 -0000 Received: from unknown (HELO mail18.svr.pol.co.uk) (195.92.67.23) by sources.redhat.com with SMTP; 25 Jun 2003 17:28:28 -0000 Received: from modem-2807.buffalo.dialup.pol.co.uk ([217.134.74.247] helo=localhost) by mail18.svr.pol.co.uk with esmtp (Exim 4.14) id 19VE3h-0003Hi-Kx for cygwin@cygwin.com; Wed, 25 Jun 2003 18:27:50 +0100 Date: Wed, 25 Jun 2003 21:40:00 -0000 From: Elfyn McBratney X-X-Sender: elfyn@ellixia Reply-To: cygwin@cygwin.com To: cygwin@cygwin.com Subject: Re: assertion "ptr != MAP_FAILED" failed while using mmap In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2003-06/txt/msg01183.txt.bz2 On Wed, 25 Jun 2003, Ronald Landheer-Cieslak wrote: > On Wed, 25 Jun 2003, Elfyn McBratney wrote: > > > On Wed, 25 Jun 2003, Alex Vinokur wrote: > > > > > =========================================== > > > Windows 2000 > > > CYGWIN_NT-5.0 1.3.22(0.78/3/2) > > > GNU gcc version 3.2 20020927 (prerelease) > > > =========================================== > > > > > > Here is some function. > > > > > > -------------------------------------- > > > void read_file (char* filename_i) > > > { > > > int fd = open(filename_i, O_RDONLY); > > > assert (fd > 2); > > > > > > off_t sz = lseek(fd, 0, SEEK_END); > > > char* ptr = (char*)mmap(0, sz, PROT_READ, 0, fd, 0); > > > > > > assert (ptr != MAP_FAILED); // Here assertion failed > > > if (ptr != MAP_FAILED) > > > { > > > string str(ptr, ptr+sz); > > > munmap(ptr, sz); > > > } > > > > > > close(fd); > > > } > > > -------------------------------------- > > > > > > Assertion "ptr != MAP_FAILED)" failed. > > > What might cause that? > > > > This is just a stab in the dark, of course, but surely `ptr != MAP_FAILED' > > would indicate that the mmap did not fail? Assertions (assert()) are based on > > true or false, so the above assert is false in that `ptr != MAP_FAILED'. > > > > Elfyn > > > > > Ehm.. > > If ptr != MAP_FAILED is not true, that means ptr == MAP_FAILED. > assert(ptr != MAP_FAILED) thus fails if mmap fails.. > > unless I'm missing something.. But what's the point in 'assert (ptr != NULL)'? Surely the best way to test for failure is the other way round (s/!=/==/), if ptr == MAP_FAILED assert, or continue...No? Elfyn -- -- 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/