Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: gnutoolchain-gerrit@osci.io,
	Christian Biesinger <cbiesinger@google.com>,
	gdb-patches@sourceware.org
Subject: Re: [review v3] Use ctime_r and localtime_r if available
Date: Fri, 08 Nov 2019 14:09:00 -0000	[thread overview]
Message-ID: <00713bff-8560-e51f-f193-8845af83251e@redhat.com> (raw)
In-Reply-To: <20191106203040.5207B25B28@gnutoolchain-gerrit.osci.io>

On 11/6/19 8:30 PM, Christian Biesinger (Code Review) wrote:
> Patch Set 3:
> 
> I looked at gnulib's time_r module but it turns out that its localtime_r implementation is not in any way threadsafe.

It does seemingly look that way:

 struct tm *
 localtime_r (time_t const * restrict t, struct tm * restrict tp)
 {
   return copy_tm_result (tp, localtime (t));
 }

But that doesn't seem worse than the #ifdef fallback that you're leaving
in place.  I'd argue that it'd be better to use the gnulib version.

But read on, please.  Looking at:

 https://www.gnu.org/software/gnulib/manual/html_node/localtime_005fr.html

Of the problems that are relevant on our supported hosts, we see:

Portability problems fixed by Gnulib:

    This function is missing on some platforms: mingw, MSVC 14. 

And, note that localtime, like other C functions that use global
state, are thread safe on Windows, because the C run time stores
the global buffers in thread local storage.  So the gnulib
implementation ends up being thread safe there, even though
it doesn't look like it is.

Thanks,
Pedro Alves


  reply	other threads:[~2019-11-08 14:09 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-31 21:06 [review] " Christian Biesinger (Code Review)
2019-10-31 21:15 ` Christian Biesinger (Code Review)
2019-11-03  2:54 ` [review v2] " Christian Biesinger (Code Review)
2019-11-03  7:20   ` Andreas Schwab
2019-11-03 20:09     ` Christian Biesinger via gdb-patches
2019-11-03  2:54 ` [review] " Christian Biesinger (Code Review)
2019-11-03 20:04 ` [review v3] " Christian Biesinger (Code Review)
2019-11-06 20:30 ` Christian Biesinger (Code Review)
2019-11-08 14:09   ` Pedro Alves [this message]
2019-11-08 17:11     ` Christian Biesinger via gdb-patches
2019-11-09 20:18       ` Christian Biesinger via gdb-patches
2019-11-10  7:38 ` Kevin Buettner (Code Review)
2019-11-10  7:45 ` Kevin Buettner (Code Review)
2019-11-11 22:22 ` [review v4] " Christian Biesinger (Code Review)
2019-11-11 22:27 ` [review v5] Use ctime_r and localtime_r for threadsafety Christian Biesinger (Code Review)
2019-11-11 22:29 ` Christian Biesinger (Code Review)
2019-11-12 20:21 ` Kevin Buettner (Code Review)
2019-11-15 19:50 ` [review v6] " Christian Biesinger (Code Review)
2019-11-15 19:52 ` [pushed] " Sourceware to Gerrit sync (Code Review)
2019-11-16 22:07 ` [review v6] " Christian Biesinger (Code Review)

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=00713bff-8560-e51f-f193-8845af83251e@redhat.com \
    --to=palves@redhat.com \
    --cc=cbiesinger@google.com \
    --cc=gdb-patches@sourceware.org \
    --cc=gnutoolchain-gerrit@osci.io \
    /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