From: Erik Faye-Lund <kusmabite@gmail.com>
To: Pat Thoyts <patthoyts@users.sourceforge.net>
Cc: git@vger.kernel.org, gitster@pobox.com
Subject: Re: [PATCH v6 00/16] daemon-win32
Date: Thu, 4 Nov 2010 01:06:17 +0100 [thread overview]
Message-ID: <AANLkTin6_RLBJZKDaDViZ2_v7_LKpyoyvofowArx9sas@mail.gmail.com> (raw)
In-Reply-To: <AANLkTim4_5dgPGcw5B3U-3UH63REL4QWsWPV=mDSJJ6D@mail.gmail.com>
On Wed, Nov 3, 2010 at 11:58 PM, Erik Faye-Lund <kusmabite@gmail.com> wrote:
> On Wed, Nov 3, 2010 at 11:18 PM, Erik Faye-Lund <kusmabite@gmail.com> wrote:
>> On Wed, Nov 3, 2010 at 10:11 PM, Pat Thoyts
>> <patthoyts@users.sourceforge.net> wrote:
>>> Erik Faye-Lund <kusmabite@gmail.com> writes:
>>>
>>>>Here's hopefully the last iteration of this series. The previous version
>>>>only got a single complain about a typo in the subject of patch 14/15, so
>>>>it seems like most controversies have been settled.
>>>
>>> I pulled this win32-daemon branch into my msysgit build tree and built
>>> it. I get the following warnings:
>>>
>>> CC daemon.o
>>> daemon.c: In function 'service_loop':
>>> daemon.c:674: warning: dereferencing pointer 'ss.124' does break strict-aliasing rules
>>> daemon.c:676: warning: dereferencing pointer 'ss.124' does break strict-aliasing rules
>>> daemon.c:681: warning: dereferencing pointer 'ss.124' does break strict-aliasing rules
>>> daemon.c:919: note: initialized from here
>>> daemon.c:679: warning: dereferencing pointer 'sin_addr' does break strict-aliasing rules
>>> daemon.c:675: note: initialized from here
>>> daemon.c:691: warning: dereferencing pointer 'sin6_addr' does break strict-aliasing rules
>>> daemon.c:682: note: initialized from here
>>>
>>
>> Yeah, I'm aware of these. I thought those warnings were already
>> present in the Linux build, but checking again I see that that's not
>> the case. Need to investigate.
>>
>
> OK, it's the patch "daemon: use run-command api for async serving"
> that introduce the warning. But looking closer at the patch it doesn't
> seem the patch actually introduce the strict-aliasing violation, it's
> there already. The patch only seems to change the code enough for GCC
> to start realize there's a problem. Unless I'm misunderstanding
> something vital, that is.
>
> Anyway, here's a patch that makes it go away, I guess I'll squash it
> into the next round.
>
I also of course need to update "daemon: get remote host address from
root-process" as well, as it introduces a new such code-path (which is
actually the one complained about here). And I guess I should use
sockaddr_in instead of sockaddr.
But my luck stops there. The resulting git-daemon.exe leaves me with a
very bizarre error:
error: unable to make a socket file descriptor: Bad file descriptor
fatal: accept returned: Bad file descriptor
This is triggered by the call to accept() in mingw_accept returning -1.
What is even stranger is that if I change the code at the error-point like this
- struct sockaddr_in sa;
+ struct sockaddr_in sa[2];
socklen_t salen = sizeof(sa);
- int incoming = accept(pfd[i].fd, (struct sockaddr *)&sa, &salen);
+ int incoming = accept(pfd[i].fd, (struct sockaddr *)sa, &salen);
the error goes away. Similarly, if I change mingw_accept's call to
Winsock's accept(), like this:
- SOCKET s2 = accept(s1, sa, sz);
+ SOCKET s2 = accept(s1, sa, NULL);
So it seems accept() somehow reacts to the value of the variable
pointed at by sz, which is 16. Strange, huh?
Perhaps it isn't -- the sockaddr_storage change seems to have been
introduced for IPv6 reasons. I'm trying to connect over IPv6, and IPv6
has a new sockaddr_in6 struct. So yeah.
Stuffing all of sockaddr, sockaddr_in and sockaddr_in6 (when built
with IPv6 support) in a union and passing that around instead does
seem to fix the issue completely. I don't find it very elegant, but
some google-searches on the issue seems to reveal that this is the
only way of getting rid of this. Any other suggestions, people?
next prev parent reply other threads:[~2010-11-04 0:07 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-03 16:31 [PATCH v6 00/16] daemon-win32 Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 01/16] mingw: add network-wrappers for daemon Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 02/16] mingw: implement syslog Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 03/16] compat: add inet_pton and inet_ntop prototypes Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 04/16] inet_ntop: fix a couple of old-style decls Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 05/16] mingw: use real pid Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 06/16] mingw: support waitpid with pid > 0 and WNOHANG Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 07/16] mingw: add kill emulation Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 08/16] daemon: use run-command api for async serving Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 09/16] daemon: use full buffered mode for stderr Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 10/16] Improve the mingw getaddrinfo stub to handle more use cases Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 11/16] daemon: get remote host address from root-process Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 12/16] mingw: import poll-emulation from gnulib Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 13/16] mingw: use " Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 14/16] daemon: use socklen_t Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 15/16] daemon: make --inetd and --detach incompatible Erik Faye-Lund
2010-11-03 16:31 ` [PATCH v6 16/16] daemon: opt-out on features that require posix Erik Faye-Lund
2010-11-03 21:11 ` [PATCH v6 00/16] daemon-win32 Pat Thoyts
2010-11-03 22:18 ` Erik Faye-Lund
2010-11-03 22:39 ` Erik Faye-Lund
2010-11-04 0:28 ` Pat Thoyts
2010-11-04 0:53 ` Erik Faye-Lund
2010-11-04 1:04 ` Pat Thoyts
2010-11-03 22:58 ` Erik Faye-Lund
2010-11-04 0:06 ` Erik Faye-Lund [this message]
2010-11-04 0:28 ` Erik Faye-Lund
2010-11-04 8:58 ` Martin Storsjö
2010-11-04 9:15 ` Erik Faye-Lund
2010-11-04 9:35 ` Martin Storsjö
2010-11-04 10:15 ` Erik Faye-Lund
2010-11-04 8:52 ` Martin Storsjö
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=AANLkTin6_RLBJZKDaDViZ2_v7_LKpyoyvofowArx9sas@mail.gmail.com \
--to=kusmabite@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=patthoyts@users.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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 NNTP newsgroup(s).