delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:reply-to:from:to:references:in-reply-to | |
:subject:date:message-id:mime-version:content-type | |
:content-transfer-encoding; q=dns; s=default; b=BAb1WfHjDxspRhqt | |
MuW7fdNxdKdw85ZNQ80UDLdpzzDJCWn3SmXzr51gEFwD/vytp451poAI123r8U4W | |
eTM+sfwKVluh8Ig75PqyfDVg7D4I73GGuvF8TMxWkvw428kLKuAOnpbXzmfqyhly | |
G8ph/JARaihBQFTjvk8TZyKZFZE= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:reply-to:from:to:references:in-reply-to | |
:subject:date:message-id:mime-version:content-type | |
:content-transfer-encoding; s=default; bh=M1A6XufWg5Ieg149yGbdTd | |
xpm8o=; b=vOKyq/8JdGdM0k2T6cZJrsfyrrKSlsx25EqLi0SDJ+EIQEaU7dOmC/ | |
67cNy7+GuIirVwhkHoFFiNWJnooULGKasjJyZjHnn0Hyi3/1XPLngB1bjk8svOie | |
8qhxzsZjIIdnoLlq7g6336Is5eoKaEXFLc2M/pnUrMiV4lUAbsIJU= | |
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 |
Authentication-Results: | sourceware.org; auth=none |
X-Virus-Found: | No |
X-Spam-SWARE-Status: | No, score=0.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 |
X-HELO: | m1plsmtpa01-04.prod.mesa1.secureserver.net |
Reply-To: | <sbardwell AT lbmsys DOT com> |
From: | "Steven Bardwell" <SBardwell AT lbmsys DOT com> |
To: | <cygwin AT cygwin DOT com> |
References: | <01a801cf1cfa$77957900$66c06b00$@lbmsys.com> <20140129181250 DOT GW2821 AT calimero DOT vinschen DOT de> <52E95786 DOT 8050606 AT gmail DOT com> <20140130095822 DOT GY2821 AT calimero DOT vinschen DOT de> |
In-Reply-To: | <20140130095822.GY2821@calimero.vinschen.de> |
Subject: | RE: second call to mmap() results in error |
Date: | Thu, 30 Jan 2014 07:25:37 -0500 |
Message-ID: | <001801cf1db6$66c47c40$344d74c0$@lbmsys.com> |
MIME-Version: | 1.0 |
X-IsSubscribed: | yes |
X-MIME-Autoconverted: | from quoted-printable to 8bit by delorie.com id s0UCQ2sU027876 |
> > On 29/01/2014 19:12, Corinna Vinschen wrote: > > >On Jan 29 09:00, Steven Bardwell wrote: > > >>My application needs several areas of shared memory, and I am getting > an > > >>error ("No such device") on the second call to mmap(). The first call > works > > >>fine. > > Sorry guys, but it still works fine for me. I tried your testcase on W7 > 32, W7 64 in 32 and 64 bit, and on Windows 8.1 64 in 32 and 64 bit. I > tried it with Cygwin 1.7.27 and with the latest snapshot. I'm always > getting the output "Shared memory initialized" and no error at all. > > > Any chance one of you guys could debug this further, by stepping through > the Cygwin mmap64 function, preferredly using the latest snapshot or, > a self-built Cygwin DLL from? > > > Corinna I reinstalled Cygwin, rebooted and the error persisted. Running 'gdb' and stepping through the program showed that the call to mmap() fails for /block1 also -- it is returning an invalid address. This simplification of the program shows that error on my machine ('Bus error (core dumped)' ) occurs when it tries to do the memcpy() to the mapped address. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/errno.h> #include <fcntl.h> #include <sys/mman.h> int main() { int shm_fd1; char *mmap1; shm_fd1 = shm_open("/block1", O_CREAT | O_RDWR, 0666); if (shm_fd1 == -1) { fprintf(stderr, "Couldn't get fd for block1 (%s)\n", strerror(errno)); exit(1); } ftruncate(shm_fd1, 524304); mmap1 = mmap(NULL, 524304, PROT_WRITE | PROT_READ, MAP_SHARED, shm_fd1, 0); if (mmap1 == (char *)-1) { fprintf(stderr, "Couldn't map memory for /block1 (%s)\n", strerror(errno)); exit(1); } memcpy(mmap1, "ABCDEF\0", 7); fprintf(stdout, mmap1); fprintf(stdout, "Shared memory initialized\n"); exit(0); } Steve -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |