* possible munmap bug
@ 2003-09-26 2:11 peter garrone
2003-09-26 9:02 ` Corinna Vinschen
0 siblings, 1 reply; 2+ messages in thread
From: peter garrone @ 2003-09-26 2:11 UTC (permalink / raw)
To: cygwin
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--))
{
--
______________________________________________
http://www.linuxmail.org/
Now with e-mail forwarding for only US$5.95/yr
Powered by Outblaze
--
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/
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: possible munmap bug
2003-09-26 2:11 possible munmap bug peter garrone
@ 2003-09-26 9:02 ` Corinna Vinschen
0 siblings, 0 replies; 2+ messages in thread
From: Corinna Vinschen @ 2003-09-26 9:02 UTC (permalink / raw)
To: cygwin
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/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-09-26 8:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-09-26 2:11 possible munmap bug peter garrone
2003-09-26 9:02 ` Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).