Yes, it is also my interpretation that the correct way to do it is to 
call tzset() just before localtime_r(). But it puzzles me why tzset() is 
not called from within localtime_r(), if tzset() is thread-safe.

/ Anders Widell

On 07/17/2014 06:19 AM, Mathivanan Naickan Palanivelu wrote:
> I find the man page cryptic, but the following discussion helps understand 
> the problems
> that can happen when tzset() is not called:
>
> http://stackoverflow.com/questions/19170721/real-time-awareness-of-timezone-change-in-localtime-vs-localtime-r
>
> Will call tzset() just before localtime_r.
>
> Mathi.
>
> ----- anders.wid...@ericsson.com wrote:
>
>> Looked a bit further into tzset(), and from what I can see, this
>> function is safe to call in a multi-threaded program:
>>
>> http://www.gnu.org/software/libc/manual/html_node/Time-Zone-Functions.html
>>
>> So we could actually place the call to tzset() just before each call
>> to
>> localtime_r(), instead of calling it in a start-up function. The
>> benefit
>> would be that we handle the case when the TZ environment variable is
>> modified.
>>
>> / Anders Widell
>>
>> On 07/16/2014 04:29 PM, Anders Widell wrote:
>>> Yes, it seems like a good idea to call tzset(), e.g. in some
>> library
>>> function that is always called early at start-up.
>>>
>>> / Anders Widell
>>>
>>> On 07/16/2014 03:57 PM, Alex Jones wrote:
>>>> One comment.  From the man page of localtime_r:
>>>>
>>>> According  to POSIX.1-2004, localtime() is required to behave as
>> though
>>>>            tzset(3) was called, while localtime_r() does not  have
>> this
>>>> require-
>>>>            ment.   For  portable  code  tzset(3)  should  be  called
>> before
>>>> local-
>>>>            time_r().
> w> >>
>>>> Do we need to do this?
>>>>
>>>> Alex
>>>>
>>>> On 07/16/2014 04:37 AM, mathi.naic...@oracle.com wrote:
>>>>> Summary: replace localtime with thread safe localtime_r [#958]
>>>>> Review request for Trac Ticket(s): #958
>>>>> Peer Reviewer(s): ramesh, mahesh, hans, praveen, nagendra, alex
>>>>> Pull request to: <<LIST THE PERSON WITH PUSH ACCESS HERE>>
>>>>> Affected branch(es): 4.3.x, 4.4.x
>>>>> Development branch: <<IF ANY GIVE THE REPO URL>>
>>>>>
>>>>> --------------------------------
>>>>> Impacted area       Impact y/n
>>>>> --------------------------------
>>>>>      Docs                    n
>>>>>      Build system            n
>>>>>      RPM/packaging           n
>>>>>      Configuration files     n
>>>>>      Startup scripts         n
>>>>>      SAF services            y
>>>>>      OpenSAF services        y
>>>>>      Core libraries          n
>>>>>      Samples                 n
>>>>>      Tests                   n
>>>>>      Other                   n
>>>>>
>>>>>
>>>>> Comments (indicate scope for each "y" above):
>>>>> ---------------------------------------------
>>>>> localtime is not thread safe and because of this, crashes have
>> been
>>>>> observed in multithreaded opensaf services (for eg:- a crash in
>> SMFD
>>>>> because logtrace uses localtime).
>>>>> The patch series replaces all occurrences of localtime with
>> localtime_r.
>>>>> changeset 8cbe68c97884d76c15e3e65c04c1e677402676c3
>>>>> Author:   mathi.naic...@oracle.com
>>>>> Date:     Wed, 16 Jul 2014 13:51:31 +0530
>>>>>
>>>>>   osaf: use thread safe localtime_r instead of localtime [#958]
>> localtime is
>>>>>   not thread safe and it can(has) cause crashes in services that
>> are multi
>>>>>   threaded.
>>>>>
>>>>> changeset 3123adbd8bd655db83216e17d33ee4ae034496f3
>>>>> Author:   mathi.naic...@oracle.com
>>>>> Date:     Wed, 16 Jul 2014 13:52:06 +0530
>>>>>
>>>>>   mds: use thread safe localtime_r instead of localtime [#958]
>> localtime is
>>>>>   not thread safe and it can(has) cause crashes in services that
>> are multi
>>>>>   threaded.
>>>>>
>>>>> changeset 80940ead9b9233e895a10992d45d7a1b37c2e791
>>>>> Author:   mathi.naic...@oracle.com
>>>>> Date:     Wed, 16 Jul 2014 13:55:09 +0530
>>>>>
>>>>>   amf: use thread safe localtime_r instead of localtime [#958]
>> localtime is
>>>>>   not thread safe and it can(has) cause crashes in services that
>> are multi
>>>>>   threaded.
>>>>>
>>>>> changeset 24833293883ba7c68b7fe1e303cadc05cf361e94
>>>>> Author:   mathi.naic...@oracle.com
>>>>> Date:     Wed, 16 Jul 2014 13:55:47 +0530
>>>>>
>>>>>   ntf: use thread safe localtime_r instead of localtime [#958]
>> localtime is
>>>>>   not thread safe and it can(has) cause crashes in services that
>> are multi
>>>>>   threaded.
>>>>>
>>>>> changeset facf9779833cecd83118a88527e60d235f6af6c8
>>>>> Author:   mathi.naic...@oracle.com
>>>>> Date:     Wed, 16 Jul 2014 13:57:46 +0530
>>>>>
>>>>>   plm: use thread safe localtime_r instead of localtime [#958]
>> localtime is
>>>>>   not thread safe and it can(has) cause crashes in services that
>> are multi
>>>>>   threaded.
>>>>>
>>>>>
>>>>> Complete diffstat:
>>>>> ------------------
>>>>>      osaf/libs/core/common/include/logtrace.h      |  2 +-
>>>>>      osaf/libs/core/common/logtrace.c              |  6 +++++-
>>>>>      osaf/libs/core/mds/mds_log.c                  |  6 +++++-
>>>>>      osaf/services/saf/amf/amfwdog/amf_wdog.c      |  6 +++++-
>>>>>      osaf/services/saf/ntfsv/ntfs/ntfs_evt.c       |  6 +++++-
>>>>>      osaf/services/saf/plmsv/plms/plms_dbg_utils.c |  6 +++++-
>>>>>      osaf/tools/safntf/src/ntfclient.c             |  6 +++++-
>>>>>      7 files changed, 31 insertions(+), 7 deletions(-)
>>>>>
>>>>>
>>>>> Testing Commands:
>>>>> -----------------
>>>>> Start opensaf, observe timestamp wherever(flows) applicable.
>>>>>
>>>>> Testing, Expected Results:
>>>>> --------------------------
>>>>> Start opensaf, observe timestamp wherever applicable.
>>>>>
>>>>>
>>>>> Conditions of Submission:
>>>>> -------------------------
>>>>> Ack from Reviewers.
>>>>>
>>>>> Arch      Built     Started    Linux distro
>>>>> -------------------------------------------
>>>>> mips        n          n
>>>>> mips64      n          n
>>>>> x86         n          n
>>>>> x86_64      y          y
>>>>> powerpc     n          n
>>>>> powerpc64   n          n
>>>>>
>>>>>
>>>>> Reviewer Checklist:
>>>>> -------------------
>>>>> [Submitters: make sure that your review doesn't trigger any
>> checkmarks!]
>>>>>
>>>>> Your checkin has not passed review because (see checked entries):
>>>>>
>>>>> ___ Your RR template is generally incomplete; it has too many
>> blank entries
>>>>>         that need proper data filled in.
>>>>>
>>>>> ___ You have failed to nominate the proper persons for review and
>> push.
>>>>> ___ Your patches do not have proper short+long header
>>>>>
>>>>> ___ You have grammar/spelling in your header that is
>> unacceptable.
>>>>> ___ You have exceeded a sensible line length in your
>> headers/comments/text.
>>>>> ___ You have failed to put in a proper Trac Ticket # into your
>> commits.
>>>>> ___ You have incorrectly put/left internal data in your
>> comments/files
>>>>>         (i.e. internal bug tracking tool IDs, product names etc)
>>>>>
>>>>> ___ You have not given any evidence of testing beyond basic build
>> tests.
>>>>>         Demonstrate some level of runtime or other sanity testing.
>>>>>
>>>>> ___ You have ^M present in some of your files. These have to be
>> removed.
>>>>> ___ You have needlessly changed whitespace or added whitespace
>> crimes
>>>>>         like trailing spaces, or spaces before tabs.
>>>>>
>>>>> ___ You have mixed real technical changes with whitespace and
>> other
>>>>>         cosmetic code cleanup changes. These have to be separate
>> commits.
>>>>> ___ You need to refactor your submission into logical chunks;
>> there is
>>>>>         too much content into a single commit.
>>>>>
>>>>> ___ You have extraneous garbage in your review (merge commits
>> etc)
>>>>> ___ You have giant attachments which should never have been sent;
>>>>>         Instead you should place your content in a public tree to
>> be pulled.
>>>>> ___ You have too many commits attached to an e-mail; resend as
>> threaded
>>>>>         commits, or place in a public tree for a pull.
>>>>>
>>>>> ___ You have resent this content multiple times without a clear
>> indication
>>>>>         of what has changed between each re-send.
>>>>>
>>>>> ___ You have failed to adequately and individually address all of
>> the
>>>>>         comments and change requests that were proposed in the
>> initial review.
>>>>> ___ You have a misconfigured ~/.hgrc file (i.e. username, email
>> etc)
>>>>> ___ Your computer have a badly configured date and time; confusing
>> the
>>>>>         the threaded patch review.
>>>>>
>>>>> ___ Your changes affect IPC mechanism, and you don't present any
>> results
>>>>>         for in-service upgradability test.
>>>>>
>>>>> ___ Your changes affect user manual and documentation, your patch
>> series
>>>>>         do not contain the patch that updates the Doxygen manual.
>>>>>
>> ------------------------------------------------------------------------------
>>>> Want fast and easy access to all the code in your enterprise? Index
>> and
>>>> search up to 200,000 lines of code with a free copy of Black Duck
>>>> Code Sight - the same software that powers the world's largest
>> code
>>>> search on Ohloh, the Black Duck Open Hub! Try it now.
>>>> http://p.sf.net/sfu/bds
>>>> _______________________________________________
>>>> Opensaf-devel mailing list
>>>> Opensaf-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>>>
>>>>
>>>
>> ------------------------------------------------------------------------------
>>> Want fast and easy access to all the code in your enterprise? Index
>> and
>>> search up to 200,000 lines of code with a free copy of Black Duck
>>> Code Sight - the same software that powers the world's largest code
>>> search on Ohloh, the Black Duck Open Hub! Try it now.
>>> http://p.sf.net/sfu/bds
>>> _______________________________________________
>>> Opensaf-devel mailing list
>>> Opensaf-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>>
>>>


------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to