Running softIoc with a dynamic ACF file, and disabling/bypassing freeListLib, turns up a candidate.
> Possible data race during write of size 8 at 0x542B6C8 by thread #19
> Locks held: 4, at addresses 0x53AFE20 0x53B9880 0x54230C0 0x542BBE0
> at 0x48FFB23: db_queue_event_log (dbEvent.c:824)
> by 0x48FFDB8: db_post_single_event (dbEvent.c:912)
> by 0x493B440: casAccessRightsCB (camessage.c:1114)
> by 0x49F111C: asComputePvt (asLibRoutines.c:1043)
> by 0x49F0E7D: asComputeAsgPvt (asLibRoutines.c:969)
> by 0x49EF50B: asComputeAsg (asLibRoutines.c:484)
> by 0x48DB897: eventCallback (asCa.c:161)
> by 0x49AD242: oldSubscription::current(epicsGuard<epicsMutex>&, unsigned int, unsigned long, void const*) (oldSubscription.cpp:67)
> by 0x490F291: dbContext::callStateNotify(dbChannel*, unsigned int, unsigned long, db_field_log const*, cacStateNotify&) (dbContext.cpp:189)
> by 0x4913209: dbChannelIO::callStateNotify(unsigned int, unsigned long, db_field_log const*, cacStateNotify&) (dbChannelIO.h:110)
> by 0x4912FB8: dbSubscriptionEventCallback (dbSubscriptionIO.cpp:118)
> by 0x490009B: event_read (dbEvent.c:997)
>
> This conflicts with a previous read of size 8 by thread #23
> Locks held: none
> at 0x4900074: event_read (dbEvent.c:998)
> by 0x4900332: event_task (dbEvent.c:1076)
> by 0x4A183CD: start_routine (osdThread.c:412)
> by 0x483C8B6: mythread_wrapper (hg_intercepts.c:389)
> by 0x4F8FFA2: start_thread (pthread_create.c:486)
> by 0x4EBE4CE: clone (clone.S:95)
> Address 0x542b6c8 is 1,192 bytes inside a block of size 2,432 alloc'd
> at 0x4838BB5: calloc (vg_replace_malloc.c:752)
> by 0x4A014A6: freeListCalloc (freeListLib.c:95)
> by 0x48FE995: db_init_events (dbEvent.c:304)
> by 0x49388B0: create_tcp_client (caservertask.c:1482)
> by 0x49351B5: req_server (caservertask.c:99)
> by 0x4A183CD: start_routine (osdThread.c:412)
> by 0x483C8B6: mythread_wrapper (hg_intercepts.c:389)
> by 0x4F8FFA2: start_thread (pthread_create.c:486)
> by 0x4EBE4CE: clone (clone.S:95)
> Block was alloc'd by thread #20
Running softIoc with a dynamic ACF file, and disabling/bypassing freeListLib, turns up a candidate.
> Possible data race during write of size 8 at 0x542B6C8 by thread #19 single_ event (dbEvent.c:912) c:1043) c:969) c:484) ::current( epicsGuard< epicsMutex> &, unsigned int, unsigned long, void const*) (oldSubscriptio n.cpp:67) :callStateNotif y(dbChannel* , unsigned int, unsigned long, db_field_log const*, cacStateNotify&) (dbContext.cpp:189) :callStateNotif y(unsigned int, unsigned long, db_field_log const*, cacStateNotify&) (dbChannelIO.h:110) ventCallback (dbSubscription IO.cpp: 118) c:389) create. c:486) malloc. c:752) c:1482) c:389) create. c:486)
> Locks held: 4, at addresses 0x53AFE20 0x53B9880 0x54230C0 0x542BBE0
> at 0x48FFB23: db_queue_event_log (dbEvent.c:824)
> by 0x48FFDB8: db_post_
> by 0x493B440: casAccessRightsCB (camessage.c:1114)
> by 0x49F111C: asComputePvt (asLibRoutines.
> by 0x49F0E7D: asComputeAsgPvt (asLibRoutines.
> by 0x49EF50B: asComputeAsg (asLibRoutines.
> by 0x48DB897: eventCallback (asCa.c:161)
> by 0x49AD242: oldSubscription
> by 0x490F291: dbContext:
> by 0x4913209: dbChannelIO:
> by 0x4912FB8: dbSubscriptionE
> by 0x490009B: event_read (dbEvent.c:997)
>
> This conflicts with a previous read of size 8 by thread #23
> Locks held: none
> at 0x4900074: event_read (dbEvent.c:998)
> by 0x4900332: event_task (dbEvent.c:1076)
> by 0x4A183CD: start_routine (osdThread.c:412)
> by 0x483C8B6: mythread_wrapper (hg_intercepts.
> by 0x4F8FFA2: start_thread (pthread_
> by 0x4EBE4CE: clone (clone.S:95)
> Address 0x542b6c8 is 1,192 bytes inside a block of size 2,432 alloc'd
> at 0x4838BB5: calloc (vg_replace_
> by 0x4A014A6: freeListCalloc (freeListLib.c:95)
> by 0x48FE995: db_init_events (dbEvent.c:304)
> by 0x49388B0: create_tcp_client (caservertask.
> by 0x49351B5: req_server (caservertask.c:99)
> by 0x4A183CD: start_routine (osdThread.c:412)
> by 0x483C8B6: mythread_wrapper (hg_intercepts.
> by 0x4F8FFA2: start_thread (pthread_
> by 0x4EBE4CE: clone (clone.S:95)
> Block was alloc'd by thread #20