Bug #347
Feature #328: Enduro/X Version 6.0 master task
In multi-threaded apps NDRX_LOG might cause core dumps
Status: | Closed | Start 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