git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v6 00/16] daemon-win32

From
Erik Faye-Lund <kusmabite@gmail.com>
Date
Nov 3, 2010, 22:58 UTC
Message-ID
<AANLkTim4_5dgPGcw5B3U-3UH63REL4QWsWPV=mDSJJ6D@mail.gmail.com>
In-Reply-To
<AANLkTin2BCxDoKhDCSgSRG1eVUGVeQh6Bq_=FfAe0M_M@mail.gmail.com>
On Wed, Nov 3, 2010 at 11:18 PM, Erik Faye-Lund <kusmabite@gmail.com> wrote:
Show 27 quoted lines
> 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.

diff --git a/daemon.c b/daemon.c
index 6eee570..d636446 100644
--- a/daemon.c
+++ b/daemon.c
@@ -1159,14 +1159,13 @@ int main(int argc, char **argv)
 	}

 	if (inetd_mode || serve_mode) {
-		struct sockaddr_storage ss;
-		struct sockaddr *peer = (struct sockaddr *)&ss;
-		socklen_t slen = sizeof(ss);
+		struct sockaddr sa;
+		socklen_t slen = sizeof(sa);

-		if (getpeername(0, peer, &slen))
-			peer = NULL;
-
-		return execute(peer);
+		if (getpeername(0, &sa, &slen))
+			return execute(NULL);
+		else
+			return execute(&sa);
 	}

 	if (detach) {
Previous: Pat ThoytsNext: Erik Faye-Lund
Message 24 of 31 in “daemon-win32”
  1. 00/16 daemon-win32Erik Faye-Lund, Nov 3, 2010
  2. 01/16 mingw: add network-wrappers for daemonErik Faye-Lund, Nov 3, 2010
  3. 02/16 mingw: implement syslogErik Faye-Lund, Nov 3, 2010
  4. 03/16 compat: add inet_pton and inet_ntop prototypesErik Faye-Lund, Nov 3, 2010
  5. 04/16 inet_ntop: fix a couple of old-style declsErik Faye-Lund, Nov 3, 2010
  6. 05/16 mingw: use real pidErik Faye-Lund, Nov 3, 2010
  7. 06/16 mingw: support waitpid with pid > 0 and WNOHANGErik Faye-Lund, Nov 3, 2010
  8. 07/16 mingw: add kill emulationErik Faye-Lund, Nov 3, 2010
  9. 08/16 daemon: use run-command api for async servingErik Faye-Lund, Nov 3, 2010
  10. 09/16 daemon: use full buffered mode for stderrErik Faye-Lund, Nov 3, 2010
  11. 10/16 Improve the mingw getaddrinfo stub to handle more use casesErik Faye-Lund, Nov 3, 2010
  12. 11/16 daemon: get remote host address from root-processErik Faye-Lund, Nov 3, 2010
  13. 12/16 mingw: import poll-emulation from gnulibErik Faye-Lund, Nov 3, 2010
  14. 13/16 mingw: use poll-emulation from gnulibErik Faye-Lund, Nov 3, 2010
  15. 14/16 daemon: use socklen_tErik Faye-Lund, Nov 3, 2010
  16. 15/16 daemon: make --inetd and --detach incompatibleErik Faye-Lund, Nov 3, 2010
  17. 16/16 daemon: opt-out on features that require posixErik Faye-Lund, Nov 3, 2010
  18. Pat ThoytsNov 3, 2010
  19. Erik Faye-LundNov 3, 2010
  20. Erik Faye-LundNov 3, 2010
  21. Pat ThoytsNov 4, 2010
  22. Erik Faye-LundNov 4, 2010
  23. Pat ThoytsNov 4, 2010
  24. Erik Faye-LundNov 3, 2010
  25. Erik Faye-LundNov 4, 2010
  26. Erik Faye-LundNov 4, 2010
  27. Martin StorsjöNov 4, 2010
  28. Erik Faye-LundNov 4, 2010
  29. Martin StorsjöNov 4, 2010
  30. Erik Faye-LundNov 4, 2010
  31. Martin StorsjöNov 4, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.