X-Spam-Check-By: sourceware.org Date: Sat, 6 Jan 2007 07:45:20 -0800 From: Christopher Layne To: cygwin AT cygwin DOT com Subject: Re: 1.7.0 CVS mmap failure Message-ID: <20070106154519.GA19640@ns1.anodized.com> References: <20070105095752 DOT GB28768 AT calimero DOT vinschen DOT de> <20070105182234 DOT GC12776 AT calimero DOT vinschen DOT de> <20070105192302 DOT GD12776 AT calimero DOT vinschen DOT de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.11 X-Assp-Spam-Prob: 0.00000 X-Assp-Whitelisted: Yes X-Assp-Envelope-From: clayne AT ns1 DOT anodized DOT com X-Assp-Intended-For: cygwin AT cygwin DOT com X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com (warning a bunch of strace, scroll wide). So I haven't been able to totally nail anything down on this issue due to the incredible complexity of Cygwin's mmap interface. This is 2 simple mmap()s in succession, 1st is 46121 bytes, 2nd is 111 bytes. Both opened read/write. The second mmap always fails. This is the current snapshot code. In the 2nd strace, I changed the mmap logic to stop trying to align the 1st map on a 4k granularity boundary and just allocate a single map w/ 64k of left over dead space (what I would typically expect in posix land). I also added more debug info at various stages to try and figure things out. When changing it to use 64k period, the mmaps are both successful - which is good, but VirtualProtect always fails, no matter what, on unmap. 1st strace ---- 130 5635179 [unknown (0x22C0)] iswcs 14132 mmap64: fh == 1628914712, addr == 0x0, len == 46121, off == 0, prot == 0, flags == 3, fd == 1 29 5635208 [unknown (0x22C0)] iswcs 14132 CreateMappingNT: fhdl == 3442792, name == 0x611744B0, len == 46121, off == 0, prot == 0, flags == 3 43 5635251 [unknown (0x22C0)] iswcs 14132 CreateMappingNT: h == 3443708, name == 0x611744B0, len == 46121, off == 0, prot == 0, flags == 3 54 5635305 [unknown (0x22C0)] iswcs 14132 MapViewNT: 7FB40000 = NtMapViewOfSection (h:348BFC, addr:0, len:46121, off:0, protect:40, type:0) 128 5635787 [unknown (0x22C0)] iswcs 14132 mmap64: fh == 1628914712, addr == 0x0, len == 49152, off == 0, prot == 0, flags == 3, fd == 1, orig_len == 12 29 5635816 [unknown (0x22C0)] iswcs 14132 mmap64: orig_len == 16384, len == 49152, pagesize == 65536, valid_page_len == 16384, sigbus_page_len == 0, at_base == 0x7FB4C000 30 5635846 [unknown (0x22C0)] iswcs 14132 CreateMappingNT: fhdl == 4294967295, name == 0x61174660, len == 16384, off == 0, prot == 0, flags == 67108867 33 5635879 [unknown (0x22C0)] iswcs 14132 CreateMappingNT: h == 3443812, name == 0x61174660, len == 16384, off == 0, prot == 0, flags == 67108867 49 5635928 [unknown (0x22C0)] iswcs 14132 MapViewNT: 7FB4C000 = NtMapViewOfSection (h:348C64, addr:7FB4C000, len:16384, off:0, protect:40, type:0) 55 5635983 [unknown (0x22C0)] iswcs 14132 mmap64: orig_len == 16384, len == 49152, pagesize == 65536, valid_page_len == 16384, sigbus_page_len == 0, at_base == 0x7FB50000 2361 5638344 [unknown (0x22C0)] iswcs 14132 mmap_record::unmap_pages: addr == 0x7FB4C000, len == 65536, off == 0 43 5638387 [unknown (0x22C0)] iswcs 14132 mmap_record::unmap_pages: VirtualProtect in unmap_pages () failed, Attempt to access invalid address. 81 5638468 [unknown (0x22C0)] iswcs 14132 mmap_record::unmap_pages: addr == 0x7FB40000, len == 65536, off == 0 30 5638498 [unknown (0x22C0)] iswcs 14132 mmap_record::unmap_pages: VirtualProtect in unmap_pages () failed, Attempt to access invalid address. 1198 5913621 [unknown (0x22C0)] iswcs 14132 mmap64: fh == 1628914712, addr == 0x0, len == 111, off == 0, prot == 0, flags == 3, fd == 1 111 5913732 [unknown (0x22C0)] iswcs 14132 CreateMappingNT: fhdl == 3443684, name == 0x611744B0, len == 111, off == 0, prot == 0, flags == 3 -1732 5913854 [unknown (0x22C0)] iswcs 14132 CreateMappingNT: h == 3442152, name == 0x611744B0, len == 111, off == 0, prot == 0, flags == 3 135 5917163 [unknown (0x22C0)] iswcs 14132 MapViewNT: 7FB50000 = NtMapViewOfSection (h:3485E8, addr:0, len:111, off:0, protect:40, type:0) 1964 5954789 [unknown (0x22C0)] iswcs 14132 mmap64: fh == 1628914712, addr == 0x0, len == 4096, off == 0, prot == 0, flags == 3, fd == 1, orig_len == 38 581 5955463 [unknown (0x22C0)] iswcs 14132 mmap64: orig_len == 61440, len == 4096, pagesize == 65536, valid_page_len == 61440, sigbus_page_len == 0, at_base == 0x7FB51000 -2520 5965447 [unknown (0x22C0)] iswcs 14132 CreateMappingNT: fhdl == 4294967295, name == 0x61174660, len == 61440, off == 0, prot == 0, flags == 67108867 -1010 5968842 [unknown (0x22C0)] iswcs 14132 CreateMappingNT: h == 3443752, name == 0x61174660, len == 61440, off == 0, prot == 0, flags == 67108867 771 5973717 [unknown (0x22C0)] iswcs 14132 MapViewNT: 0 = NtMapViewOfSection (h:348C28, addr:7FB51000, len:61440, off:0, protect:40, type:0) 315 5976384 [unknown (0x22C0)] iswcs 14132 __set_errno: void* mmap64(void*, size_t, int, int, int, _off64_t):1283 val 12 ---- 2nd strace ---- 429 6379631 [unknown (0x2164)] iswcs 24296 CreateMappingNT: fhdl == 3442760, name == 0x611744B0, len == 46121, off == 0, prot == 0, flags == 3 116 6379747 [unknown (0x2164)] iswcs 24296 CreateMappingNT: h == 3443780, name == 0x611744B0, len == 46121, off == 0, prot == 0, flags == 3 376 6380462 [unknown (0x2164)] iswcs 24296 MapViewNT: 7FB40000 = NtMapViewOfSection (h:348C44, addr:0, len:46121, off:0, protect:40, type:0) -986 6405625 [unknown (0x2164)] iswcs 24296 mmap64: fh == 1628914712, base == 0x7FB40000, addr == 0x0, len == 46121, orig_len == 46121, off == 0, prot == 0, flags == 3, fd == 1 -2321 6407688 [unknown (0x2164)] iswcs 24296 mmap64: fh == 1628914712, base == 0x7FB40000, addr == 0x0, len == 65536, orig_len == 65536, off == 0, prot == 0, flags == 3, fd == 1 2176 6754422 [unknown (0x2164)] iswcs 24296 mmap_record::unmap_pages: addr == 0x7FB40000, len == 65536, off == 0, psz == 65536, get_address() + off * psz == 2142502912, len * psz == 0 87 6754509 [unknown (0x2164)] iswcs 24296 mmap_record::unmap_pages: addr == 0x7FB40000, len (page cnt now) == 1, off == 0, psz == 65536, get_address() + off * psz == 2142502912, len * psz == 65536 -858 6754608 [unknown (0x2164)] iswcs 24296 mmap_record::unmap_pages: VirtualProtect in unmap_pages () failed, Attempt to access invalid address. -1021 7244483 [unknown (0x2164)] iswcs 24296 CreateMappingNT: fhdl == 3442444, name == 0x611744B0, len == 111, off == 0, prot == 0, flags == 3 262 7246675 [unknown (0x2164)] iswcs 24296 CreateMappingNT: h == 3442312, name == 0x611744B0, len == 111, off == 0, prot == 0, flags == 3 75 7248028 [unknown (0x2164)] iswcs 24296 MapViewNT: 7FB50000 = NtMapViewOfSection (h:348688, addr:0, len:111, off:0, protect:40, type:0) 2190 7337551 [unknown (0x2164)] iswcs 24296 mmap64: fh == 1628914712, base == 0x7FB50000, addr == 0x0, len == 111, orig_len == 111, off == 0, prot == 0, flags == 3, fd == 1 -326 7337637 [unknown (0x2164)] iswcs 24296 mmap64: fh == 1628914712, base == 0x7FB50000, addr == 0x0, len == 65536, orig_len == 65536, off == 0, prot == 0, flags == 3, fd == 1 1572 7342043 [unknown (0x2164)] iswcs 24296 mmap_record::unmap_pages: addr == 0x7FB50000, len == 65536, off == 0, psz == 65536, get_address() + off * psz == 2142568448, len * psz == 0 610 7344286 [unknown (0x2164)] iswcs 24296 mmap_record::unmap_pages: addr == 0x7FB50000, len (page cnt now) == 1, off == 0, psz == 65536, get_address() + off * psz == 2142568448, len * psz == 65536 -156 7344394 [unknown (0x2164)] iswcs 24296 mmap_record::unmap_pages: VirtualProtect in unmap_pages () failed, Attempt to access invalid address. ---- On Fri, Jan 05, 2007 at 03:15:29PM -0600, Brian Ford wrote: > On Fri, 5 Jan 2007, Corinna Vinschen wrote: > > > "overmap"? -v please? > > Posix symantics: mmap fixed region x, mmap fixed region y which is a > subregion of x where y replaces x's mapping. -- 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/