This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
Re: possible munmap bug
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Fri, 26 Sep 2003 10:54:47 +0200
- Subject: Re: possible munmap bug
- References: <20030926015248.6464.qmail@linuxmail.org>
- Reply-to: cygwin at cygwin dot com
On Fri, Sep 26, 2003 at 09:52:48AM +0800, peter garrone wrote:
> Hi,
> This was causing my build of gcc to fail.
> File winsup/cygwin/mmap.cc version 1.86 (and earlier) function munmap
> when unmapping a 64K record, passes the wrong parameters to fhandler_base::munmap,
> passing the function parameter address/length instead of a block local version.
>
> This patch explains it all.
>
> diff -r -p -U 5 cygwin-snapshot-20030924-1/winsup/cygwin/mmap.cc new_cygwin/winsup/cygwin/mmap.cc
> --- cygwin-snapshot-20030924-1/winsup/cygwin/mmap.cc 2003-09-25 10:40:33.000000000 +1000
> +++ new_cygwin/winsup/cygwin/mmap.cc 2003-09-26 11:34:29.984375000 +1000
> @@ -679,11 +679,11 @@ munmap (void *addr, size_t len)
> mmap_record *rec = map_list->get_record (record_idx);
> if (rec->unmap_pages (u_addr, u_len))
> {
> /* The whole record has been unmapped, so... */
> fhandler_base *fh = rec->alloc_fh ();
> - fh->munmap (rec->get_handle (), (caddr_t)addr, len);
> + fh->munmap (rec->get_handle (), (caddr_t)u_addr, u_len);
> rec->free_fh (fh);
>
> /* ...delete the record. */
> if (map_list->del_record (record_idx--))
> {
>
Thanks for the headsup and the patch. Actually I found that it's still
not quite correct. Fhandler's munmap method should be called with the
same address and length which has been returned by a former call to
fhandler's mmap. In Win32 terms: UnmapViewOfFile has to be called
with the same address returned by a call to MapViewOfFile(Ex). So in
the above code the munmap should be called like this:
fh->munmap (rec->get_handle (), rec->get_address (), rec->get_size ());
since rec->get_address() returns exactly that address. I've checked in
an appropriate patch.
Thanks again,
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Developer mailto:cygwin@cygwin.com
Red Hat, Inc.
--
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/