Bug #347

Feature #328: Enduro/X Version 6.0 master task

In multi-threaded apps NDRX_LOG might cause core dumps

Added by Madars over 5 years ago. Updated over 5 years ago.

Status:ClosedStart date:10/10/2018
Priority:Normal (Code 4)Due date:
Assignee:Madars% Done:

100%

Category:-
Target version:-

Description

ASAN:SIGSEGV
=================================================================
==15302==ERROR: AddressSanitizer: SEGV on unknown address 0x7fff08800002 (pc 0x7f07db84781d bp 0x61800000f880 sp 0x7f07d5de1dc0 T6)
    #0 0x7f07db84781c in getenv (/lib/x86_64-linux-gnu/libc.so.6+0x3981c)
    #1 0x7f07db8cbcab  (/lib/x86_64-linux-gnu/libc.so.6+0xbdcab)
    #2 0x7f07dcccc885  (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x3b885)
    #3 0x7f07dc3d8cfe in ndrx_get_dt_local /home/mvitolin/projects/endurox/libnstd/nstdutil.c:256
    #4 0x7f07dc3d6389 in __ndrx_debug__ /home/mvitolin/projects/endurox/libnstd/ndebug.c:1070
    #5 0x7f07dc43254f in ndrx_svq_mqd_hash_findtout /home/mvitolin/projects/endurox/libnstd/sys_svqevent.c:547
    #6 0x7f07dc43254f in ndrx_svq_timeout_thread /home/mvitolin/projects/endurox/libnstd/sys_svqevent.c:796
    #7 0x7f07dbbdf6b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
    #8 0x7f07db91541c in clone (/lib/x86_64-linux-gnu/libc.so.6+0x10741c)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ??:0 getenv
Thread T6 created by T0 here:
    #0 0x7f07dccc7253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
    #1 0x7f07dc43108d in event_fork_resume /home/mvitolin/projects/endurox/libnstd/sys_svqevent.c:1172
    #2 0x7f07db8da4f5 in __fork (/lib/x86_64-linux-gnu/libc.so.6+0xcc4f5)
    #3 0x7f07dccc7756 in fork (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36756)
    #4 0x41a24d in app_startup /home/mvitolin/projects/endurox/ndrxd/pmodel.c:1262
    #5 0x41eeb8 in cmd_start /home/mvitolin/projects/endurox/ndrxd/cmd_startstop.c:118
    #6 0x41d8e3 in command_wait_and_run /home/mvitolin/projects/endurox/ndrxd/cmd_processor.c:465
    #7 0x405e79 in main_loop /home/mvitolin/projects/endurox/ndrxd/ndrxd.c:141
    #8 0x40774c in main /home/mvitolin/projects/endurox/ndrxd/ndrxd.c:470
    #9 0x7f07db82e82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)

==15302==ABORTING
N:NDRX:3:d5d3db3a:15282:7f07d2cd1300:000:20181010:054841292:handle_child:pmodel.c:0174:sigchld: PID: 15302 exit status: 256

According to Posix standard: http://pubs.opengroup.org/onlinepubs/9699919799/functions/getenv.html getenv is no thread safe...

History

#1 Updated by Madars over 5 years ago

expublic void ndrx_get_dt_local(long *p_date, long *p_time, long *p_usec)
{
    struct tm       *p_tm;
    long            lret;
    struct timeval  timeval;
    struct timezone timezone_val;

    gettimeofday (&timeval, &timezone_val);
    p_tm = localtime(&timeval.tv_sec);

Problem is with local time. localtime_r shall be used.

#2 Updated by Madars over 5 years ago

  • Status changed from New to Resolved
  • Assignee set to Madars
  • % Done changed from 0 to 100

#3 Updated by Madars over 5 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF