Hi
I have a persistent task, which opens and closes connections to various IOCs (other services as well) per client requests.
Seems that each open/close cycle causes another thread to be created and it never terminates – errlogThread. I suspect there is one more step I need to perform when ‘closing’ a connection.
This the output from gdb for one of the remnant threads:
#0 0x00007f122a317705 in pthread_cond_wait@@GLIBC_2.3.2 ()
from /lib64/libpthread.so.0
#1 0x00007f1227ee8099 in condWait (mutexId=0x12c6300, condId=0x12c6328)
at ../../../src/libCom/osi/os/posix/osdEvent.c:75
#2 epicsEventWait (pevent=0x12c6300)
at ../../../src/libCom/osi/os/posix/osdEvent.c:137
#3 0x00007f1227ed269e in errlogThread ()
at ../../../src/libCom/error/errlog.c:491
#4 0x00007f1227ee5e6f in start_routine (arg=0x12ca420)
at ../../../src/libCom/osi/os/posix/osdThread.c:385
#5 0x00007f122a313df5 in start_thread () from /lib64/libpthread.so.0
#6 0x00007f122950c1ad in clone () from /lib64/libc.so.6
Using R3.14.12.5
This is my process for opening a connection:
ca_context_create
ca_add_exception_event
ca_add_fd_registration
for each channel:
ca_search_and_connect
ca_add_masked_array_event
This is my process for closing a connection:
for each channel:
ca_clear_event
ca_clear_channel
ca_flush_io
ca_context_destroy
What did I miss?
Thanks for any help,
Al