Tcl Source Code

View Ticket
Login
Ticket UUID: 3cc1d91345c31934a269f3641bfd4ad4583695b6
Title: duplicate calls to TclpFreeAllocCache() on thread exits
Type: Bug Version: 8.6.6, 8.5
Submitter: gustafn2 Created on: 2016-09-26 13:05:46
Subsystem: 49. Threading Assigned To: jan.nijtmans
Priority: 8 Severity: Severe
Status: Closed Last Modified: 2016-10-11 21:55:25
Resolution: Fixed Closed By: jan.nijtmans
    Closed on: 2016-10-11 21:55:25
Description:
Tcl can crash during shutdown in multithreaded applications on systems
using pthreads. This applies to e.g. Linux or Mac OS X when compiled without
-DPUFIY. In Tcl (e.g. core-8-6-branch, AFIKT since "ever") the function
TclpFreeAllocCache() is called twice during thread shutdowns, once via 
"manual" call indirectly via Tcl_FinalizeThread(), and once via pthreads.
The automatic call happens, since Tcl registers TclpFreeAllocCache() with

   pthread_key_create(&key, TclpFreeAllocCache);

The duplicated call itself is usually not harmful (but useless), but poses a
serious problem when a multi-threaded C program registers a thread-shutdown 
callback via

   pthread_key_create(&key, CleanupFunction);

where typically CleanupFunction() calls some Tcl-script and then
Tcl_FinalizeThread(). In such cases, the order of calls of
TclpFreeAllocCache() and CleanupFunction() is random, since
http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_key_create.html
states that the order of destructor calls is unspecified, when more
than one destructor exists for a thread when it exits. After a call to
TclpFreeAllocCache() no Tcl eval can be performed in this
thread. Attempts are likely to crash. The problem is quite old but has
intensified in tcl 8.6 due to the NRE machinery (TclNRAddCallback(),
TclNREvalObjv()) which puts more stress on memory management.

I would argue, that every larger threaded C program has to register a
per-thread exit handler for per-thread cleanups. This happens as well
in NaviSever/AOLserver, where tcl-based callbacks can be registered
for interp destroys.

One simple fix is to prevent the double invocation of
TclpFreeAllocCache() and to rely on the manual call in
Tcl_FinalizeThread(). This is actually nothing new and corresponds to
current behavior under windows (there is not "automatic" call either).

Note that the problem does not exist on unix systems when compiled
with -DPURIFY, since in such cases, TclpFreeAllocCache() is never
called.

==================================================================
--- unix/tclUnixThrd.c
+++ unix/tclUnixThrd.c
@@ -743,11 +743,11 @@
 TclpGetAllocCache(void)
 {
     if (!initialized) {
     pthread_mutex_lock(allocLockPtr);
     if (!initialized) {
-        pthread_key_create(&key, TclpFreeAllocCache);
+        pthread_key_create(&key, NULL);
         initialized = 1;
     }
     pthread_mutex_unlock(allocLockPtr);
     }
     return pthread_getspecific(key);
==================================================================

Note, that the source code documentation was not correctly describing
the current behavior either. The attached patch suggests some
improvements.

See below for evidence of crashes and the sketched behavior. The first
listings shows printf-traces with thread-IDs, where the intersting
lines of the thread with ID 7000003a6000 are marked with "A". It shows
a case, where TclpFreeAllocCache() is called automatically via
pthreads, before the thread exit handler NaviServer could call
Tcl_FinalizeThread().

The second listing shows a backtrace of such a crash. Since
TclpFreeAllocCache() was called before, tcl crashes in TclNREvalObjv(),
or more precisely in
	TclNRAddCallback(interp, NRCommand, NULL, NULL, NULL, NULL);
where it attempts to obtain memory. This crash happens before Tcl_FinalizeThread(). The patch will not cause any difference on systems
where Tcl_FinalizeThread() is called.

All said applies to Tcl 8.5 as well.

all the best
-gustaf neumann

===================================================
In order to reproduce this crashes, get e.g. the actual version of NaviServer
from bitbucket [1], compile it, and run

    make test  TESTFLAGS="-file ns_parseurl.test"

a few times from its install directory. The crash happens even more often, 
when the final cleanup call is not omitted [2].

[1] https://bitbucket.org/naviserver/naviserver
[2] https://bitbucket.org/naviserver/naviserver/commits/137b9512f773307fc3f211642225466428dc88b3

===================================================
     [21/Sep/2016:12:17:09][7286.7fff7460a000][-main-] Notice: nsmain: NaviServer/4.99.13d1 stopping
     [21/Sep/2016:12:17:09][7286.7fff7460a000][-main-] Notice: [driver:nssock]: stopping
     [21/Sep/2016:12:17:09][7286.7fff7460a000][-main-] Notice: server [test]: stopping
     [21/Sep/2016:12:17:09][7286.7fff7460a000][-main-] Notice: server [testvhost]: stopping
     [21/Sep/2016:12:17:09][7286.7000002a0000][-conn:test:emergency:0-] Notice: exiting: shutdown pending
     [21/Sep/2016:12:17:09][7286.7fff7460a000][-main-] Notice: server [testvhost2]: stopping
     #### (7000002a0000) TclpFreeAllocCache 0x7feb085007d0 initialized 1
     [21/Sep/2016:12:17:09][7286.700000429000][-conn:testvhost:0-] Notice: exiting: shutdown pending
     #### (700000429000) TclpFreeAllocCache 0x7feb08409030 initialized 1
     #### (700000429000) NsCleanupTls: NS_finalshutdown 1
     #### (700000429000) ==================== DeleteInterps
     #### (700000429000) ==================== DeleteInterp 0x7feb098e5010
     ####  RunTraces(itPtr, NS_TCL_TRACE_DELETE); ==============
     ####  RunTraces(0x7feb099d2410, 2); ==============
     #### (700000429000) RunTrace(0x7feb099d2410, 2) interp 0x7feb098e5010 ==============
     [21/Sep/2016:12:17:09][7286.7000004ac000][-conn:testvhost2:0-] Notice: exiting: shutdown pending
     #### (7000004ac000) TclpFreeAllocCache 0x7feb08735230 initialized 1
     #### (700000429000) NsfFinalizeCmd exitHandlerRound 0
     [21/Sep/2016:12:17:09][7286.70000052f000][-driver:nssock-] Notice: exiting
     #### (70000052f000) TclpFreeAllocCache 0x7feb086040e0 initialized 1
     #### (700000429000) Tcl_DeleteInterp 0x7feb098e5010
     #### (700000429000) NsCleanupTls: Tcl_FinalizeThread start
     #### (700000429000) FinalizeThread quick 0
     #### (700000429000) call thread exithandler 0x105494770(0x7feb098e5010)
     +++ (700000429000) Nsf_ThreadExitProc 0x7feb098e5010
     +++ (700000429000) ExitHandler interp 0x7feb098e5010 deleted 1 exitHandlerDestroyRound 2
     #### (700000429000) tclBasic DeleteInterpProc 0x7feb098e5010
     #### (700000429000) DeleteInterpProc could call NsfFinalizeCmd 0x7feb098e5010
     #### (700000429000) DeleteInterpProc 0x7feb098e5010 DONE
     #### (700000429000) call thread exithandler 0x104f07100(0x7feb0912e210)
     #### (700000429000) call thread exithandler 0x104f07100(0x7feb099cd190)
     #### (700000429000) call thread exithandler 0x104ef8be0(0x0)
     #### (700000429000) call thread exithandler 0x104eafc20(0x7feb099ccb10)
     #### (700000429000) call thread exithandler 0x104ee5a80(0x7feb099cc610)
     #### (700000429000) call thread exithandler 0x104eca700(0x0)
     #### (700000429000) call thread exithandler 0x104f28cb0(0x0)
     #### (700000429000) call TclFinalizeIOSubsystem()
     #### (700000429000) TclFinalizeNotifier tsdPtr 0x7feb08adf290 tsdPtr->initialized 1
     #### (700000429000) TclFinalizeNotifier firstNotifierPtr 0x7feb09951a90 tsdPtr 0x7feb08adf290 count 6
     #### (700000429000) TclFinalizeThreadData 0
     #### (700000429000) TclFinalizeThreadAllocThread 0x7feb08409030
     #### (700000429000) TclpFreeAllocCache 0x7feb08409030 initialized 1
     #### (700000429000) NsCleanupTls: Tcl_FinalizeThread done
     #### (700000429000) TclpFreeAllocCache 0x7feb08409030 initialized 1
     #### (7000002a0000) NsCleanupTls: NS_finalshutdown 1
     #### (7000002a0000) ==================== DeleteInterps
     #### (7000002a0000) ==================== DeleteInterp 0x7feb09155610
     ####  RunTraces(itPtr, NS_TCL_TRACE_DELETE); ==============
     ####  RunTraces(0x7feb0919a810, 2); ==============
     #### (7000002a0000) RunTrace(0x7feb0919a810, 2) interp 0x7feb09155610 ==============
     #### (7000002a0000) NsfFinalizeCmd exitHandlerRound 0
     #### (7000002a0000) Tcl_DeleteInterp 0x7feb09155610
     #### (7000002a0000) NsCleanupTls: Tcl_FinalizeThread start
     #### (7000002a0000) FinalizeThread quick 0
     #### (7000002a0000) call thread exithandler 0x105494770(0x7feb09155610)
     +++ (7000002a0000) Nsf_ThreadExitProc 0x7feb09155610
     +++ (7000002a0000) ExitHandler interp 0x7feb09155610 deleted 1 exitHandlerDestroyRound 2
     #### (7000002a0000) tclBasic DeleteInterpProc 0x7feb09155610
     #### (7000002a0000) DeleteInterpProc could call NsfFinalizeCmd 0x7feb09155610
     #### (7000002a0000) DeleteInterpProc 0x7feb09155610 DONE
     #### (7000002a0000) call thread exithandler 0x104f07100(0x7feb0918e790)
     #### (7000002a0000) call thread exithandler 0x104f07100(0x7feb0918e510)
     #### (7000002a0000) call thread exithandler 0x104ef8be0(0x0)
     #### (7000002a0000) call thread exithandler 0x104eafc20(0x7feb0918de90)
     #### (7000002a0000) call thread exithandler 0x104ee5a80(0x7feb0918d990)
     #### (7000002a0000) call thread exithandler 0x104eca700(0x0)
     #### (7000002a0000) call thread exithandler 0x104f28cb0(0x0)
     #### (7000002a0000) call TclFinalizeIOSubsystem()
     #### (7000002a0000) TclFinalizeNotifier tsdPtr 0x7feb0895e490 tsdPtr->initialized 1
     #### (7000002a0000) TclFinalizeNotifier firstNotifierPtr 0x7feb09951a90 tsdPtr 0x7feb0895e490 count 5
     #### (7000002a0000) TclFinalizeThreadData 0
     #### (7000002a0000) TclFinalizeThreadAllocThread 0x7feb085007d0
     #### (7000002a0000) TclpFreeAllocCache 0x7feb085007d0 initialized 1
     #### (7000002a0000) NsCleanupTls: Tcl_FinalizeThread done
     #### (7000002a0000) TclpFreeAllocCache 0x7feb08735230 initialized 1
     #### (7000004ac000) NsCleanupTls: NS_finalshutdown 1
     #### (7000004ac000) ==================== DeleteInterps
     #### (7000004ac000) ==================== DeleteInterp 0x7feb0a1f5210
     ####  RunTraces(itPtr, NS_TCL_TRACE_DELETE); ==============
     ####  RunTraces(0x7feb0a240c10, 2); ==============
     #### (7000004ac000) RunTrace(0x7feb0a240c10, 2) interp 0x7feb0a1f5210 ==============
     #### (7000004ac000) NsfFinalizeCmd exitHandlerRound 0
A    [21/Sep/2016:12:17:09][7286.7000003a6000][-conn:test:1-] Notice: exiting: shutdown pending
A    #### (7000003a6000) TclpFreeAllocCache 0x7feb08500a80 initialized 1
     #### (7000004ac000) Tcl_DeleteInterp 0x7feb0a1f5210
     #### (7000004ac000) NsCleanupTls: Tcl_FinalizeThread start
     #### (7000004ac000) FinalizeThread quick 0
     #### (7000004ac000) call thread exithandler 0x105494770(0x7feb0a1f5210)
     +++ (7000004ac000) Nsf_ThreadExitProc 0x7feb0a1f5210
     +++ (7000004ac000) ExitHandler interp 0x7feb0a1f5210 deleted 1 exitHandlerDestroyRound 2
     #### (7000004ac000) tclBasic DeleteInterpProc 0x7feb0a1f5210
     #### (7000004ac000) DeleteInterpProc could call NsfFinalizeCmd 0x7feb0a1f5210
     #### (7000004ac000) DeleteInterpProc 0x7feb0a1f5210 DONE
     #### (7000004ac000) call thread exithandler 0x104f07100(0x7feb0a239d10)
     #### (7000004ac000) call thread exithandler 0x104f07100(0x7feb0a239a90)
     #### (7000004ac000) call thread exithandler 0x104ef8be0(0x0)
     #### (7000004ac000) call thread exithandler 0x104eafc20(0x7feb0a239410)
     #### (7000004ac000) call thread exithandler 0x104ee5a80(0x7feb0a238f10)
     #### (7000004ac000) call thread exithandler 0x104eca700(0x0)
     #### (7000004ac000) call thread exithandler 0x104f28cb0(0x0)
     #### (7000004ac000) call TclFinalizeIOSubsystem()
     #### (7000004ac000) TclFinalizeNotifier tsdPtr 0x7feb09951a90 tsdPtr->initialized 1
     #### (7000004ac000) TclFinalizeNotifier firstNotifierPtr 0x7feb09151a90 tsdPtr 0x7feb09951a90 count 4
     #### (7000004ac000) TclFinalizeThreadData 0
     #### (7000004ac000) TclFinalizeThreadAllocThread 0x7feb085007d0
     #### (7000004ac000) TclpFreeAllocCache 0x7feb085007d0 initialized 1
     #### (7000004ac000) NsCleanupTls: Tcl_FinalizeThread done
     #### (7000004ac000) TclpFreeAllocCache 0x7feb085007d0 initialized 1
     #### (70000052f000) NsCleanupTls: NS_finalshutdown 1
     #### (70000052f000) NsCleanupTls: Tcl_FinalizeThread start
     #### (70000052f000) FinalizeThread quick 0
     #### (70000052f000) TclFinalizeThreadData 0
     #### (70000052f000) TclFinalizeThreadAllocThread 0x7feb08735230
     #### (70000052f000) TclpFreeAllocCache 0x7feb08735230 initialized 1
     #### (70000052f000) NsCleanupTls: Tcl_FinalizeThread done
     #### (70000052f000) TclpFreeAllocCache 0x7feb08735230 initialized 1
A    #### (7000003a6000) NsCleanupTls: NS_finalshutdown 1
A    #### (7000003a6000) ==================== DeleteInterps
A    #### (7000003a6000) ==================== DeleteInterp 0x7feb0a1c3c10
A    ####  RunTraces(itPtr, NS_TCL_TRACE_DELETE); ==============
A    ####  RunTraces(0x7feb0c814810, 2); ==============
A    #### (7000003a6000) RunTrace(0x7feb0c814810, 2) interp 0x7feb0a1c3c10 ==============
     make: *** [test] Segmentation fault: 11 (core dumped)




Process:               nsd [84637]
Path:                  /usr/local/src/naviserver/nsd/nsd
Identifier:            nsd
Version:               0
Code Type:             X86-64 (Native)
Parent Process:        make [84565]
Responsible:           Terminal [302]
User ID:               501

Date/Time:             2016-09-26 14:19:42.979 +0200
OS Version:            Mac OS X 10.11.6 (15G1004)
Report Version:        11
Anonymous UUID:        131B4905-9EE2-71A1-2888-2AA905279DF3

Sleep/Wake UUID:       1B26B782-4E7D-4366-9B96-D49E5AF9FF8C

Time Awake Since Boot: 21000 seconds
Time Since Wake:       8700 seconds

System Integrity Protection: enabled

Crashed Thread:        6

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000020

VM Regions Near 0x20:
--> 
    __TEXT                 000000010818f000-0000000108192000 [   12K] r-x/rwx SM=COW  /usr/local/src/naviserver/nsd/nsd

Thread 0:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff892d9de6 __psynch_mutexwait + 10
1   libsystem_pthread.dylib       	0x00007fff8b716e4a _pthread_mutex_lock_wait + 89
2   libnsthread.dylib             	0x00000001082c1708 NsLockSet + 88 (pthread.c:253)
3   libnsthread.dylib             	0x00000001082beb71 Ns_MutexLock + 193 (mutex.c:259)
4   libnsd.dylib                  	0x00000001081e1003 NsWaitServer + 179 (queue.c:924)
5   libnsd.dylib                  	0x00000001081eb0cc NsStopServers + 220 (server.c:187)
6   libnsd.dylib                  	0x00000001081d90d7 Ns_Main + 3287 (nsmain.c:719)
7   nsd                           	0x0000000108191f79 main + 41 (main.c:62)
8   libdyld.dylib                 	0x00007fff8a1c65ad start + 1

Thread 1:
0   libsystem_kernel.dylib        	0x00007fff892d3f72 mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff892d33b3 mach_msg + 55
2   com.apple.CoreFoundation      	0x00007fff9099e1c4 __CFRunLoopServiceMachPort + 212
3   com.apple.CoreFoundation      	0x00007fff9099d68c __CFRunLoopRun + 1356
4   com.apple.CoreFoundation      	0x00007fff9099ced8 CFRunLoopRunSpecific + 296
5   libtcl8.6.dylib               	0x00000001084b44a7 Tcl_WaitForEvent + 407 (tclMacOSXNotify.c:1267)
6   libtcl8.6.dylib               	0x00000001084346dd Tcl_DoOneEvent + 413 (tclNotify.c:946)
7   libtcl8.6.dylib               	0x00000001083cc3fb Tcl_VwaitObjCmd + 219 (tclEvent.c:1413)
8   libtcl8.6.dylib               	0x00000001082f1dee Dispatch + 126 (tclBasic.c:4357)
9   libtcl8.6.dylib               	0x00000001082edd66 TclNRRunCallbacks + 166 (tclBasic.c:4390)
10  libtcl8.6.dylib               	0x00000001082eda94 Tcl_EvalObjv + 84 (tclBasic.c:4120)
11  libtcl8.6.dylib               	0x00000001082ef428 TclEvalEx + 3128 (tclBasic.c:5259)
12  libtcl8.6.dylib               	0x000000010841ff3d Tcl_FSEvalFileEx + 1037 (tclIOUtil.c:1826)
13  libtcl8.6.dylib               	0x000000010842b188 Tcl_MainEx + 1160 (tclMain.c:420)
14  libnsd.dylib                  	0x00000001081d94cc CmdThread + 108 (nsmain.c:1137)
15  libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
16  libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
17  libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
18  libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
19  libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 2:: Dispatch queue: com.apple.libdispatch-manager
0   libsystem_kernel.dylib        	0x00007fff892daefa kevent_qos + 10
1   libdispatch.dylib             	0x00007fff94f51165 _dispatch_mgr_invoke + 216
2   libdispatch.dylib             	0x00007fff94f50dcd _dispatch_mgr_thread + 52

Thread 3:
0   libsystem_kernel.dylib        	0x00007fff892da5e2 __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8b716578 _pthread_wqthread + 1283
2   libsystem_pthread.dylib       	0x00007fff8b714341 start_wqthread + 13

Thread 4:
0   libsystem_kernel.dylib        	0x00007fff892da5e2 __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8b716578 _pthread_wqthread + 1283
2   libsystem_pthread.dylib       	0x00007fff8b714341 start_wqthread + 13

Thread 5:
0   libsystem_kernel.dylib        	0x00007fff892d9db6 __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff8b717728 _pthread_cond_wait + 767
2   libnsthread.dylib             	0x00000001082c20b0 Ns_CondTimedWait + 256 (pthread.c:746)
3   libnsd.dylib                  	0x00000001081eab77 SchedThread + 839 (sched.c:873)
4   libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
5   libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
6   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
7   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
8   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 6 Crashed:
0   libtcl8.6.dylib               	0x00000001082edb33 TclNREvalObjv + 147 (tclBasic.c:4150)
1   libtcl8.6.dylib               	0x00000001082eda81 Tcl_EvalObjv + 65 (tclBasic.c:4119)
2   libtcl8.6.dylib               	0x00000001082ef428 TclEvalEx + 3128 (tclBasic.c:5259)
3   libtcl8.6.dylib               	0x00000001082ee7dc Tcl_EvalEx + 60 (tclBasic.c:4924)
4   libnsd.dylib                  	0x00000001081f7092 Ns_TclEvalCallback + 978 (tclcallbacks.c:176)
5   libnsd.dylib                  	0x0000000108203c9e NsTclTraceProc + 46 (tclinit.c:1769)
6   libnsd.dylib                  	0x000000010820216f RunTraces + 335 (tclinit.c:2175)
7   libnsd.dylib                  	0x00000001082023dc Ns_TclDestroyInterp + 220 (tclinit.c:604)
8   libnsd.dylib                  	0x000000010820131c DeleteInterps + 140 (tclinit.c:2311)
9   libnsthread.dylib             	0x00000001082c0fc3 NsCleanupTls + 211 (tls.c:200)
10  libnsthread.dylib             	0x00000001082c1521 CleanupTls + 129 (pthread.c:848)
11  libsystem_pthread.dylib       	0x00007fff8b718387 _pthread_tsd_cleanup + 470
12  libsystem_pthread.dylib       	0x00007fff8b717f63 _pthread_exit + 117
13  libsystem_pthread.dylib       	0x00007fff8b718c0e pthread_exit + 30
14  libnsthread.dylib             	0x00000001082c1ada Ns_ThreadExit + 26
15  libnsd.dylib                  	0x00000001081e23e9 NsConnThread + 3737 (queue.c:1395)
16  libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
17  libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
18  libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
19  libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
20  libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 7:
0   libsystem_kernel.dylib        	0x00007fff892d9de6 __psynch_mutexwait + 10
1   libsystem_pthread.dylib       	0x00007fff8b716e4a _pthread_mutex_lock_wait + 89
2   libnsthread.dylib             	0x00000001082c1708 NsLockSet + 88 (pthread.c:253)
3   libnsthread.dylib             	0x00000001082beb71 Ns_MutexLock + 193 (mutex.c:259)
4   libnsd.dylib                  	0x00000001081e2356 NsConnThread + 3590 (queue.c:1378)
5   libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
6   libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
7   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
8   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
9   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 8:
0   libsystem_kernel.dylib        	0x00007fff892da10a __semwait_signal + 10
1   libsystem_pthread.dylib       	0x00007fff8b718787 pthread_join + 444
2   libnsthread.dylib             	0x00000001082c1b48 Ns_ThreadJoin + 104 (pthread.c:457)
3   libnsd.dylib                  	0x00000001081e1199 JoinConnThread + 89 (queue.c:1747)
4   libnsd.dylib                  	0x00000001081e2393 NsConnThread + 3651 (queue.c:1386)
5   libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
6   libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
7   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
8   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
9   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 9:
0   libtcl8.6.dylib               	0x000000010846466b GetBlocks + 523 (tclThreadAlloc.c:1007)
1   libtcl8.6.dylib               	0x000000010846417f TclpAlloc + 223 (tclThreadAlloc.c:358)
2   libtcl8.6.dylib               	0x00000001082fc733 Tcl_Alloc + 19 (tclCkalloc.c:1059)
3   libtcl8.6.dylib               	0x0000000108456d1f Tcl_NewStringObj + 159 (tclStringObj.c:287)
4   libtcl8.6.dylib               	0x000000010843dfd4 TclSubstTokens + 1524 (tclParse.c:2367)
5   libtcl8.6.dylib               	0x00000001082eee53 TclEvalEx + 1635 (tclBasic.c:5146)
6   libtcl8.6.dylib               	0x00000001082ee7dc Tcl_EvalEx + 60 (tclBasic.c:4924)
7   libnsd.dylib                  	0x00000001081f7092 Ns_TclEvalCallback + 978 (tclcallbacks.c:176)
8   libnsd.dylib                  	0x0000000108203c9e NsTclTraceProc + 46 (tclinit.c:1769)
9   libnsd.dylib                  	0x000000010820216f RunTraces + 335 (tclinit.c:2175)
10  libnsd.dylib                  	0x00000001082023dc Ns_TclDestroyInterp + 220 (tclinit.c:604)
11  libnsd.dylib                  	0x000000010820131c DeleteInterps + 140 (tclinit.c:2311)
12  libnsthread.dylib             	0x00000001082c0fc3 NsCleanupTls + 211 (tls.c:200)
13  libnsthread.dylib             	0x00000001082c1521 CleanupTls + 129 (pthread.c:848)
14  libsystem_pthread.dylib       	0x00007fff8b718387 _pthread_tsd_cleanup + 470
15  libsystem_pthread.dylib       	0x00007fff8b717f63 _pthread_exit + 117
16  libsystem_pthread.dylib       	0x00007fff8b718c0e pthread_exit + 30
17  libnsthread.dylib             	0x00000001082c1ada Ns_ThreadExit + 26
18  libnsd.dylib                  	0x00000001081e23e9 NsConnThread + 3737 (queue.c:1395)
19  libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
20  libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
21  libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
22  libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
23  libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 10:
0   libsystem_kernel.dylib        	0x00007fff892d9de6 __psynch_mutexwait + 10
1   libsystem_pthread.dylib       	0x00007fff8b716e4a _pthread_mutex_lock_wait + 89
2   libtcl8.6.dylib               	0x0000000108496adc Tcl_MutexLock + 140 (tclUnixThrd.c:439)
3   libtcl8.6.dylib               	0x000000010846540a LockBucket + 42 (tclThreadAlloc.c:878)
4   libtcl8.6.dylib               	0x00000001084644ad GetBlocks + 77 (tclThreadAlloc.c:984)
5   libtcl8.6.dylib               	0x000000010846417f TclpAlloc + 223 (tclThreadAlloc.c:358)
6   libtcl8.6.dylib               	0x00000001082fc733 Tcl_Alloc + 19 (tclCkalloc.c:1059)
7   libtcl8.6.dylib               	0x0000000108456d1f Tcl_NewStringObj + 159 (tclStringObj.c:287)
8   libtcl8.6.dylib               	0x000000010843dfd4 TclSubstTokens + 1524 (tclParse.c:2367)
9   libtcl8.6.dylib               	0x00000001082eee53 TclEvalEx + 1635 (tclBasic.c:5146)
10  libtcl8.6.dylib               	0x00000001082ee7dc Tcl_EvalEx + 60 (tclBasic.c:4924)
11  libnsd.dylib                  	0x00000001081f7092 Ns_TclEvalCallback + 978 (tclcallbacks.c:176)
12  libnsd.dylib                  	0x0000000108203c9e NsTclTraceProc + 46 (tclinit.c:1769)
13  libnsd.dylib                  	0x000000010820216f RunTraces + 335 (tclinit.c:2175)
14  libnsd.dylib                  	0x00000001082023dc Ns_TclDestroyInterp + 220 (tclinit.c:604)
15  libnsd.dylib                  	0x000000010820131c DeleteInterps + 140 (tclinit.c:2311)
16  libnsthread.dylib             	0x00000001082c0fc3 NsCleanupTls + 211 (tls.c:200)
17  libnsthread.dylib             	0x00000001082c1521 CleanupTls + 129 (pthread.c:848)
18  libsystem_pthread.dylib       	0x00007fff8b718387 _pthread_tsd_cleanup + 470
19  libsystem_pthread.dylib       	0x00007fff8b717f63 _pthread_exit + 117
20  libsystem_pthread.dylib       	0x00007fff8b718c0e pthread_exit + 30
21  libnsthread.dylib             	0x00000001082c1ada Ns_ThreadExit + 26
22  libnsd.dylib                  	0x00000001081e23e9 NsConnThread + 3737 (queue.c:1395)
23  libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
24  libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
25  libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
26  libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
27  libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 11:
0   libsystem_kernel.dylib        	0x00007fff892db2a2 poll + 10
1   libnsd.dylib                  	0x0000000108235001 ns_poll + 97 (unix.c:963)
2   libnsd.dylib                  	0x00000001081c2fca PollWait + 106 (driver.c:1726)
3   libnsd.dylib                  	0x00000001081c2035 SpoolerThread + 293 (driver.c:3382)
4   libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
5   libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
6   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
7   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
8   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 12:
0   libsystem_kernel.dylib        	0x00007fff892db2a2 poll + 10
1   libnsd.dylib                  	0x0000000108235001 ns_poll + 97 (unix.c:963)
2   libnsd.dylib                  	0x00000001081c2fca PollWait + 106 (driver.c:1726)
3   libnsd.dylib                  	0x00000001081c2035 SpoolerThread + 293 (driver.c:3382)
4   libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
5   libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
6   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
7   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
8   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 13:
0   libsystem_kernel.dylib        	0x00007fff892db2a2 poll + 10
1   libnsd.dylib                  	0x0000000108235001 ns_poll + 97 (unix.c:963)
2   libnsd.dylib                  	0x00000001081c2fca PollWait + 106 (driver.c:1726)
3   libnsd.dylib                  	0x00000001081c2035 SpoolerThread + 293 (driver.c:3382)
4   libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
5   libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
6   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
7   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
8   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 14:
0   libsystem_kernel.dylib        	0x00007fff892db2a2 poll + 10
1   libnsd.dylib                  	0x0000000108235001 ns_poll + 97 (unix.c:963)
2   libnsd.dylib                  	0x00000001081c2fca PollWait + 106 (driver.c:1726)
3   libnsd.dylib                  	0x00000001081c26b7 WriterThread + 407 (driver.c:4087)
4   libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
5   libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
6   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
7   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
8   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 15:
0   libsystem_kernel.dylib        	0x00007fff892db2a2 poll + 10
1   libnsd.dylib                  	0x0000000108235001 ns_poll + 97 (unix.c:963)
2   libnsd.dylib                  	0x00000001081c2fca PollWait + 106 (driver.c:1726)
3   libnsd.dylib                  	0x00000001081c26b7 WriterThread + 407 (driver.c:4087)
4   libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
5   libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
6   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
7   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
8   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 16:
0   libsystem_kernel.dylib        	0x00007fff892db2a2 poll + 10
1   libnsd.dylib                  	0x0000000108235001 ns_poll + 97 (unix.c:963)
2   libnsd.dylib                  	0x00000001081c2fca PollWait + 106 (driver.c:1726)
3   libnsd.dylib                  	0x00000001081c26b7 WriterThread + 407 (driver.c:4087)
4   libnsthread.dylib             	0x00000001082c0517 NsThreadMain + 151 (thread.c:227)
5   libnsthread.dylib             	0x00000001082c1ab5 ThreadMain + 21 (pthread.c:810)
6   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
7   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
8   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 17:
0   libsystem_kernel.dylib        	0x00007fff892da07a __select + 10
1   libtcl8.6.dylib               	0x00000001084b4f24 NotifierThreadProc + 884 (tclMacOSXNotify.c:1816)
2   libsystem_pthread.dylib       	0x00007fff8b71699d _pthread_body + 131
3   libsystem_pthread.dylib       	0x00007fff8b71691a _pthread_start + 168
4   libsystem_pthread.dylib       	0x00007fff8b714351 thread_start + 13

Thread 6 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000000000000102  rcx: 0x0000000000200010  rdx: 0x00007fd2a081d010
  rdi: 0x00007fd2a081d010  rsi: 0x0000000000000003  rbp: 0x000070000029f370  rsp: 0x000070000029f310
   r8: 0x0000000000000000   r9: 0x0000000000000000  r10: 0x000070000029f7e0  r11: 0x00000fd2a360b964
  r12: 0x00007000002a0000  r13: 0x00007000002a0000  r14: 0x0000000000000000  r15: 0x00007fff72165900
  rip: 0x00000001082edb33  rfl: 0x0000000000010202  cr2: 0x0000000000000020
  
Logical CPU:     3
Error Code:      0x00000004
Trap Number:     14


Binary Images:
       0x10818f000 -        0x108191ff7 +nsd (0) <2855EBB8-4F15-38B8-A0C9-DEBA95D94F26> /usr/local/src/naviserver/nsd/nsd
       0x108197000 -        0x10824fff7 +libnsd.dylib (0) <8830CB07-0C0A-3C93-B370-2CDBF716CABD> /usr/local/src/naviserver/nsd/libnsd.dylib
       0x1082a1000 -        0x1082b1fff +libz.1.dylib (0) <5FCFF38B-5983-3590-B5E9-074CF0950676> /opt/local/lib/libz.1.dylib
       0x1082bc000 -        0x1082c2ff7 +libnsthread.dylib (0) <AE7BD076-96B3-3804-894E-326C4D803964> /usr/local/src/naviserver/nsthread/libnsthread.dylib
       0x1082cc000 -        0x1084ecff3 +libtcl8.6.dylib (8.6.6 - 8.6.6) <49EFA938-8CDF-3DF6-B8B2-988E5CD03F91> /usr/local/ns/lib/libtcl8.6.dylib
       0x10856b000 -        0x1085affff +libssl.1.0.0.dylib (0) <EC36C961-CD70-3A2B-8859-C82F2F99CC39> /opt/local/lib/libssl.1.0.0.dylib
       0x1085cd000 -        0x1087517ef +libcrypto.1.0.0.dylib (0) <510C2E29-B2CE-36F7-ABED-2CCD0521E40A> /opt/local/lib/libcrypto.1.0.0.dylib
       0x1089f5000 -        0x1089f9ff7 +nslog.so (0) <0C5DDBF1-3A5F-371E-96E9-34AF4D5A56EF> /usr/local/src/naviserver/nslog/nslog.so
       0x109a00000 -        0x109a7fffb +libnsf2.1.0.dylib (0) <F30012CB-D00D-39A2-B11E-38A782428A48> /usr/local/ns/lib/nsf2.1.0/libnsf2.1.0.dylib
       0x109bea000 -        0x109becffb +nsdb.so (0) <56AAC66C-B377-3027-B705-6FA6A024B42D> /usr/local/src/naviserver/nsdb/nsdb.so
       0x109bef000 -        0x109bfaff7 +libnsdb.dylib (0) <DA2BC00B-3FCC-3784-9E1B-B35B0413A225> /usr/local/src/naviserver/nsdb/libnsdb.dylib
       0x109c00000 -        0x109c02ff7 +nsdbtest.so (0) <012C3E18-5142-3967-BADC-1C24CE1C8B77> /usr/local/src/naviserver/nsdbtest/nsdbtest.so
       0x109c05000 -        0x109c07fff +nsproxy.so (0) <1F0A30CB-26B3-3953-9E1F-356E790E54F7> /usr/local/src/naviserver/nsproxy/nsproxy.so
       0x109c0a000 -        0x109c13ff3 +libnsproxy.dylib (0) <1B9F47C7-68DF-3150-8366-D6CF636C0D50> /usr/local/src/naviserver/nsproxy/libnsproxy.dylib
       0x109c81000 -        0x109c83ff3 +nssock.so (0) <C4A12D2D-9CDB-31A7-B71E-C402DDAAF766> /usr/local/src/naviserver/nssock/nssock.so
    0x7fff677e4000 -     0x7fff6781ba47  dyld (360.22) <DC81CC9D-651A-3A45-8809-928282052BD3> /usr/lib/dyld
    0x7fff82a86000 -     0x7fff82aa2ff7  libsystem_malloc.dylib (67.40.1) <5748E8B2-F81C-34C6-8B13-456213127678> /usr/lib/system/libsystem_malloc.dylib
    0x7fff82ec4000 -     0x7fff82eccffb  libsystem_dnssd.dylib (625.60.4) <80189998-32B0-316C-B5C5-53857486713D> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff851b3000 -     0x7fff85219ff7  libsystem_network.dylib (583.50.1) <B52DAB73-92DC-3DA7-B9F4-B899D66445C1> /usr/lib/system/libsystem_network.dylib
    0x7fff85869000 -     0x7fff8587aff7  libz.1.dylib (61.20.1) <B3EBB42F-48E3-3287-9F0D-308E04D407AC> /usr/lib/libz.1.dylib
    0x7fff86d2a000 -     0x7fff86d2bfff  libDiagnosticMessagesClient.dylib (100) <4243B6B4-21E9-355B-9C5A-95A216233B96> /usr/lib/libDiagnosticMessagesClient.dylib
    0x7fff86d2c000 -     0x7fff86d2efff  libsystem_coreservices.dylib (19.2) <1B3F5AFC-FFCD-3ECB-8B9A-5538366FB20D> /usr/lib/system/libsystem_coreservices.dylib
    0x7fff86d2f000 -     0x7fff86d30ffb  libSystem.B.dylib (1226.10.1) <012548CD-614D-3AF0-B3B1-676F427D2CD6> /usr/lib/libSystem.B.dylib
    0x7fff86dd1000 -     0x7fff86de2ff7  libsystem_trace.dylib (201.10.3) <E9311C03-9E61-3B13-AF3F-A64956FFF269> /usr/lib/system/libsystem_trace.dylib
    0x7fff86fa9000 -     0x7fff86fadfff  libcache.dylib (75) <9548AAE9-2AB7-3525-9ECE-A2A7C4688447> /usr/lib/system/libcache.dylib
    0x7fff86fe5000 -     0x7fff86ffcff7  libsystem_coretls.dylib (83.40.5) <C90DAE38-4082-381C-A185-2A6A8B677628> /usr/lib/system/libsystem_coretls.dylib
    0x7fff88784000 -     0x7fff88785ffb  libremovefile.dylib (41) <552EF39E-14D7-363E-9059-4565AC2F894E> /usr/lib/system/libremovefile.dylib
    0x7fff88d2e000 -     0x7fff88d33ff3  libunwind.dylib (35.3) <F6EB48E5-4D12-359A-AB54-C937FBBE9043> /usr/lib/system/libunwind.dylib
    0x7fff88fbb000 -     0x7fff88fbbff7  libunc.dylib (29) <DDB1E947-C775-33B8-B461-63E5EB698F0E> /usr/lib/system/libunc.dylib
    0x7fff89012000 -     0x7fff89017ff7  libmacho.dylib (875.1) <318264FA-58F1-39D8-8285-1F6254EE410E> /usr/lib/system/libmacho.dylib
    0x7fff89031000 -     0x7fff89032fff  libsystem_secinit.dylib (20) <32B1A8C6-DC84-3F4F-B8CE-9A52B47C3E6B> /usr/lib/system/libsystem_secinit.dylib
    0x7fff892c3000 -     0x7fff892e1ff7  libsystem_kernel.dylib (3248.60.11) <A3F069EA-6A41-35CA-BDF8-187E0209B3E2> /usr/lib/system/libsystem_kernel.dylib
    0x7fff89d45000 -     0x7fff89d6eff7  libxpc.dylib (765.50.8) <54D1328E-054E-3DAA-89E2-375722F9D18F> /usr/lib/system/libxpc.dylib
    0x7fff89d8d000 -     0x7fff89db6fff  libsystem_info.dylib (477.50.4) <FAA9226D-64DE-3769-A6D8-6CABA4B7FF4D> /usr/lib/system/libsystem_info.dylib
    0x7fff89db7000 -     0x7fff89dceff7  libsystem_asl.dylib (323.50.1) <41F8E11F-1BD0-3F1D-BA3A-AA1577ED98A9> /usr/lib/system/libsystem_asl.dylib
    0x7fff8a1c3000 -     0x7fff8a1c6ffb  libdyld.dylib (360.22) <25D28225-99AE-3A04-B98C-ACFF47D6D9B0> /usr/lib/system/libdyld.dylib
    0x7fff8a23f000 -     0x7fff8a2ccfef  libsystem_c.dylib (1082.60.1) <28733D22-553E-3CBC-8D2C-EDCEB46E46AF> /usr/lib/system/libsystem_c.dylib
    0x7fff8b2ed000 -     0x7fff8b340ff7  libc++.1.dylib (120.1) <8FC3D139-8055-3498-9AC5-6467CB7F4D14> /usr/lib/libc++.1.dylib
    0x7fff8b341000 -     0x7fff8b344fff  libsystem_sandbox.dylib (460.60.2) <2A68B39C-B786-3A05-87A2-56E688469FB8> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff8b713000 -     0x7fff8b71cff7  libsystem_pthread.dylib (138.10.4) <3DD1EF4C-1D1B-3ABF-8CC6-B3B1CEEE9559> /usr/lib/system/libsystem_pthread.dylib
    0x7fff8c002000 -     0x7fff8c079feb  libcorecrypto.dylib (335.50.1) <B5C05FD7-A540-345A-87BF-8E41848A3C17> /usr/lib/system/libcorecrypto.dylib
    0x7fff8d89b000 -     0x7fff8d89dff7  libquarantine.dylib (80) <0F4169F0-0C84-3A25-B3AE-E47B3586D908> /usr/lib/system/libquarantine.dylib
    0x7fff8de44000 -     0x7fff8de8aff7  libauto.dylib (186) <999E610F-41FC-32A3-ADCA-5EC049B65DFB> /usr/lib/libauto.dylib
    0x7fff8e656000 -     0x7fff8e9b8f3f  libobjc.A.dylib (680) <7489D2D6-1EFD-3414-B18D-2AECCCC90286> /usr/lib/libobjc.A.dylib
    0x7fff8ef69000 -     0x7fff8ef70ff7  libcompiler_rt.dylib (62) <A13ECF69-F59F-38AE-8609-7B731450FBCD> /usr/lib/system/libcompiler_rt.dylib
    0x7fff90914000 -     0x7fff90d8afff  com.apple.CoreFoundation (6.9 - 1258.1) <943A1383-DA6A-3DC0-ABCD-D9AEB3D0D34D> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff91227000 -     0x7fff9122ffff  libsystem_networkextension.dylib (385.40.36) <66095DC7-6539-38F2-95EE-458F15F6D014> /usr/lib/system/libsystem_networkextension.dylib
    0x7fff91231000 -     0x7fff91231ff7  liblaunch.dylib (765.50.8) <834ED605-5114-3641-AA4D-ECF31B801C50> /usr/lib/system/liblaunch.dylib
    0x7fff91a89000 -     0x7fff91ab3ff7  libc++abi.dylib (307.2) <922EFB36-0E9E-315B-8270-E81AC43472C0> /usr/lib/libc++abi.dylib
    0x7fff92e4f000 -     0x7fff92e57fef  libsystem_platform.dylib (74.40.2) <29A905EF-6777-3C33-82B0-6C3A88C4BA15> /usr/lib/system/libsystem_platform.dylib
    0x7fff931bd000 -     0x7fff931c5fff  libcopyfile.dylib (127) <A48637BC-F3F2-34F2-BB68-4C65FD012832> /usr/lib/system/libcopyfile.dylib
    0x7fff932dd000 -     0x7fff932defff  libsystem_blocks.dylib (65) <1244D9D5-F6AA-35BB-B307-86851C24B8E5> /usr/lib/system/libsystem_blocks.dylib
    0x7fff932e7000 -     0x7fff932e7ff7  libkeymgr.dylib (28) <8371CE54-5FDD-3CE9-B3DF-E98C761B6FE0> /usr/lib/system/libkeymgr.dylib
    0x7fff93672000 -     0x7fff9387ffff  libicucore.A.dylib (551.51.4) <3899B146-3840-3D4A-8C4A-FE391D5D25C7> /usr/lib/libicucore.A.dylib
    0x7fff938a5000 -     0x7fff938a7ff7  libsystem_configuration.dylib (802.40.13) <3DEB7DF9-6804-37E1-BC83-0166882FF0FF> /usr/lib/system/libsystem_configuration.dylib
    0x7fff93935000 -     0x7fff93940ff7  libcommonCrypto.dylib (60075.50.1) <93732261-34B4-3914-B7A2-90A81A182DBA> /usr/lib/system/libcommonCrypto.dylib
    0x7fff94e51000 -     0x7fff94e5aff3  libsystem_notify.dylib (150.40.1) <D48BDE34-0F7E-34CA-A0FF-C578E39987CC> /usr/lib/system/libsystem_notify.dylib
    0x7fff94f49000 -     0x7fff94f76fff  libdispatch.dylib (501.40.12) <C7499857-61A5-3D7D-A5EA-65DCC8C3DF92> /usr/lib/system/libdispatch.dylib
    0x7fff957a1000 -     0x7fff957d0ffb  libsystem_m.dylib (3105) <08E1A4B2-6448-3DFE-A58C-ACC7335BE7E4> /usr/lib/system/libsystem_m.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 1567811
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=112.1M resident=0K(0%) swapped_out_or_unallocated=112.1M(100%)
Writable regions: Total=163.8M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=163.8M(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Activity Tracing                  2048K        2 
Dispatch continuations            16.0M        2 
Kernel Alloc Once                    4K        2 
MALLOC                            73.8M       13 
MALLOC guard page                   16K        4 
STACK GUARD                         72K       19 
Stack                             71.8M       20 
VM_ALLOCATE                         20K        3 
__DATA                            3360K       63 
__LINKEDIT                        92.6M       18 
__TEXT                            19.5M       60 
__UNICODE                          552K        2 
shared memory                       28K        5 
===========                     =======  ======= 
TOTAL                            279.5M      200 

Model: MacBookPro11,5, BootROM MBP114.0172.B09, 4 processors, Intel Core i7, 2,8 GHz, 16 GB, SMC 2.30f2
Graphics: AMD Radeon R9 M370X, AMD Radeon R9 M370X, PCIe, 2048 MB
Graphics: Intel Iris Pro, Intel Iris Pro, Built-In
Memory Module: BANK 0/DIMM0, 8 GB, DDR3, 1600 MHz, 0x802C, 0x31364B544631473634485A2D314736453120
Memory Module: BANK 1/DIMM0, 8 GB, DDR3, 1600 MHz, 0x802C, 0x31364B544631473634485A2D314736453120
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x152), Broadcom BCM43xx 1.0 (7.21.95.175.1a6)
Bluetooth: Version 4.4.6f1 17910, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Serial ATA Device: APPLE SSD SM1024G, 1 TB
USB Device: USB 3.0 Bus
USB Device: Apple Internal Keyboard / Trackpad
USB Device: Bluetooth USB Host Controller
Thunderbolt Bus: MacBook Pro, Apple Inc., 27.1
User Comments: jan.nijtmans added on 2016-10-11 21:55:25:
Fix committed to core-8-5-branch, core-8-6-branch and trunk. Thanks, Gustaf!

gustafn2 added on 2016-10-07 13:14:55:
found a second documentation flaw related to the allocator cache, and added an additional patch file.

gustafn2 added on 2016-09-26 18:24:48:
here is the patch...

jan.nijtmans added on 2016-09-26 14:47:48:
> Note, that the source code documentation was not correctly describing
> the current behavior either. The attached patch suggests some
> improvements.

Where can I find this documentation patch?

Indeed, I think the best thing to do is rely on the TclpFreeAllocCache() call in Tcl_FinalizeThread(). So I agree with your patch, and welcome your suggestions for documentation improvement.

Attachments: