[ 
https://issues.apache.org/jira/browse/PROTON-2225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jiri Daněk updated PROTON-2225:
-------------------------------
    Fix Version/s: proton-c-0.32.0

> Set -DTHREADERCISER=ON by default, to prevent regressions
> ---------------------------------------------------------
>
>                 Key: PROTON-2225
>                 URL: https://issues.apache.org/jira/browse/PROTON-2225
>             Project: Qpid Proton
>          Issue Type: Test
>          Components: build
>    Affects Versions: proton-c-0.31.0
>            Reporter: Jiri Daněk
>            Assignee: Jiri Daněk
>            Priority: Major
>             Fix For: proton-c-0.32.0
>
>
> Previously, the test stopped compiling, as fixed in PROTON-2120. The reason 
> the test is disabled is that the test is failing when it is run.
> Instead of disabling the test, it would be better to have the test running, 
> suppress the reported errors and fill a jira to get them fixed eventually. 
> This requires writing suppressions for both helgrind and tsan.
> Now that fd-limit test is disabled (PROTON-2172), we should have some other 
> test to highlight issues from PROTON-2133.
> Current state is that threaderciser test builds and fails under helgrind with
> {noformat}
> threaderciser start: threads=8, time=1, actions=[listen, close-listen, 
> connect, close-connect, wake, timeout, cancel-timeout]
> ==17017== ---Thread-Announcement------------------------------------------
> ==17017== 
> ==17017== Thread #5 was created
> ==17017==    at 0x4D69A3E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==    by 0x4863DBB: create_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x486568B: pthread_create@@GLIBC_2.2.5 (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x483E374: pthread_create_WRK (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x483F46F: pthread_create@* (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x403C92: main (threaderciser.c:572)
> ==17017== 
> ==17017== ---Thread-Announcement------------------------------------------
> ==17017== 
> ==17017== Thread #2 was created
> ==17017==    at 0x4D69A3E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==    by 0x4863DBB: create_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x486568B: pthread_create@@GLIBC_2.2.5 (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x483E374: pthread_create_WRK (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x483F46F: pthread_create@* (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x403C64: main (threaderciser.c:571)
> ==17017== 
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 4 at 0x4FDF90C by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4855143: post_event (epoll.c:2429)
> ==17017==    by 0x4855C40: proactor_do_epoll (epoll.c:2676)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdf90c is 12 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:post_event
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during write of size 4 at 0x4FDF940 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4855267: post_event (epoll.c:2455)
> ==17017==    by 0x4855C40: proactor_do_epoll (epoll.c:2676)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdf940 is 64 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:post_event
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during write of size 1 at 0x4FDFA11 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x485526E: post_event (epoll.c:2456)
> ==17017==    by 0x4855C40: proactor_do_epoll (epoll.c:2676)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdfa11 is 273 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:post_event
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 1 at 0x4FDFA12 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x485533F: post_event (epoll.c:2477)
> ==17017==    by 0x4855C40: proactor_do_epoll (epoll.c:2676)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdfa12 is 274 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:post_event
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 8 at 0x4FDFA00 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4855351: post_event (epoll.c:2477)
> ==17017==    by 0x4855C40: proactor_do_epoll (epoll.c:2676)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdfa00 is 256 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:post_event
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 8 at 0x4FDF9A8 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x484FBAF: make_runnable (epoll.c:630)
> ==17017==    by 0x4855C57: proactor_do_epoll (epoll.c:2678)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdf9a8 is 168 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:make_runnable
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during write of size 1 at 0x4FDFA12 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x484FC37: make_runnable (epoll.c:635)
> ==17017==    by 0x4855C57: proactor_do_epoll (epoll.c:2678)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdfa12 is 274 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:make_runnable
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 8 at 0x4FDFA08 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x484FC50: make_runnable (epoll.c:638)
> ==17017==    by 0x4855C57: proactor_do_epoll (epoll.c:2678)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdfa08 is 264 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:make_runnable
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during write of size 8 at 0x4FDFA00 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x484F853: assign_thread (epoll.c:539)
> ==17017==    by 0x48555E8: next_runnable (epoll.c:2539)
> ==17017==    by 0x48557CD: proactor_do_epoll (epoll.c:2578)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdfa00 is 256 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:assign_thread
>    fun:next_runnable
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during write of size 8 at 0x4FDFA08 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x484F85E: assign_thread (epoll.c:540)
> ==17017==    by 0x48555E8: next_runnable (epoll.c:2539)
> ==17017==    by 0x48557CD: proactor_do_epoll (epoll.c:2578)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdfa08 is 264 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:assign_thread
>    fun:next_runnable
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 1 at 0x4FDFA10 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4854E3B: process (epoll.c:2362)
> ==17017==    by 0x48557F3: proactor_do_epoll (epoll.c:2581)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdfa10 is 272 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:process
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 4 at 0x4FDF9B0 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4854E59: process (epoll.c:2368)
> ==17017==    by 0x48557F3: proactor_do_epoll (epoll.c:2581)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdf9b0 is 176 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:process
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 1 at 0x4FDFC69 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4854F24: process (epoll.c:2382)
> ==17017==    by 0x48557F3: proactor_do_epoll (epoll.c:2581)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fdfc69 is 873 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:process
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ---Thread-Announcement------------------------------------------
> ==17017== 
> ==17017== Thread #4 was created
> ==17017==    at 0x4D69A3E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==    by 0x4863DBB: create_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x486568B: pthread_create@@GLIBC_2.2.5 (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x483E374: pthread_create_WRK (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x483F46F: pthread_create@* (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x403C64: main (threaderciser.c:571)
> ==17017== 
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 1 at 0x4FE7802 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x48555CB: next_runnable (epoll.c:2538)
> ==17017==    by 0x48557CD: proactor_do_epoll (epoll.c:2578)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fe7802 is 274 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #4
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:next_runnable
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 8 at 0x4FE77F0 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x484F820: assign_thread (epoll.c:538)
> ==17017==    by 0x48555E8: next_runnable (epoll.c:2539)
> ==17017==    by 0x48557CD: proactor_do_epoll (epoll.c:2578)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fe77f0 is 256 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #4
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:assign_thread
>    fun:next_runnable
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during write of size 1 at 0x4FE7802 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x484F86D: assign_thread (epoll.c:541)
> ==17017==    by 0x48555E8: next_runnable (epoll.c:2539)
> ==17017==    by 0x48557CD: proactor_do_epoll (epoll.c:2578)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fe7802 is 274 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #4
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:assign_thread
>    fun:next_runnable
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during write of size 1 at 0x4FE7801 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4854E30: process (epoll.c:2361)
> ==17017==    by 0x48557F3: proactor_do_epoll (epoll.c:2581)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fe7801 is 273 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #4
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:process
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 4 at 0x4FE7730 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4854F09: process (epoll.c:2380)
> ==17017==    by 0x48557F3: proactor_do_epoll (epoll.c:2581)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fe7730 is 64 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #4
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:process
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during write of size 4 at 0x4FE7730 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4854F19: process (epoll.c:2381)
> ==17017==    by 0x48557F3: proactor_do_epoll (epoll.c:2581)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fe7730 is 64 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #4
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:process
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017==  Lock at 0x4FD4380 was first observed
> ==17017==    at 0x483F7BD: pthread_mutex_init (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EBFF: pmutex_init (epoll.c:137)
> ==17017==    by 0x485412D: pn_proactor (epoll.c:2104)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Address 0x4fd4380 is 576 bytes inside a block of size 896 alloc'd
> ==17017==    at 0x483A9F2: calloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48540BD: pn_proactor (epoll.c:2099)
> ==17017==    by 0x402F2D: global_init (threaderciser.c:335)
> ==17017==    by 0x403BD2: main (threaderciser.c:564)
> ==17017==  Block was alloc'd by thread #1
> ==17017== 
> ==17017== Possible data race during read of size 8 at 0x4FE7798 by thread #5
> ==17017== Locks held: 1, at address 0x4FD4380
> ==17017==    at 0x4854F43: process (epoll.c:2384)
> ==17017==    by 0x48557F3: proactor_do_epoll (epoll.c:2581)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Address 0x4fe7798 is 168 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #4
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:process
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
>    fun:mythread_wrapper
>    fun:start_thread
>    fun:clone
> }
> ==17017== ---Thread-Announcement------------------------------------------
> ==17017== 
> ==17017== Thread #3 was created
> ==17017==    at 0x4D69A3E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==    by 0x4863DBB: create_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x486568B: pthread_create@@GLIBC_2.2.5 (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x483E374: pthread_create_WRK (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x483F46F: pthread_create@* (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x403C92: main (threaderciser.c:572)
> ==17017== 
> ==17017== ----------------------------------------------------------------
> ==17017== 
> ==17017== Possible data race during read of size 1 at 0x4FDF988 by thread #5
> ==17017== Locks held: none
> ==17017==    at 0x483B42C: my_memcmp (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x483B6D9: mutex_destroy_WRK (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x483F849: pthread_mutex_destroy (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EC2E: pmutex_finalize (epoll.c:143)
> ==17017==    by 0x484F26F: pcontext_finalize (epoll.c:348)
> ==17017==    by 0x4850A05: pconnection_final_free (epoll.c:944)
> ==17017==    by 0x4850B31: pconnection_cleanup (epoll.c:967)
> ==17017==    by 0x4851B42: pconnection_process (epoll.c:1337)
> ==17017==    by 0x4854F71: process (epoll.c:2385)
> ==17017==    by 0x48557F3: proactor_do_epoll (epoll.c:2581)
> ==17017==    by 0x4856402: pn_proactor_wait (epoll.c:2803)
> ==17017==    by 0x40362D: proactor_thread (threaderciser.c:473)
> ==17017== 
> ==17017== This conflicts with a previous write of size 4 by thread #3
> ==17017== Locks held: none
> ==17017==    at 0x4868E17: __pthread_mutex_unlock_usercnt (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x483BEEB: mutex_unlock_WRK (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x483F875: pthread_mutex_unlock (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x484EC62: unlock (epoll.c:145)
> ==17017==    by 0x485135E: pconnection_done (epoll.c:1163)
> ==17017==    by 0x485650E: pn_proactor_done (epoll.c:2829)
> ==17017==    by 0x403696: proactor_thread (threaderciser.c:478)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==  Address 0x4fdf988 is 136 bytes inside a block of size 909 alloc'd
> ==17017==    at 0x48387A3: malloc (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x48524FA: pn_proactor_connect2 (epoll.c:1545)
> ==17017==    by 0x4857024: pn_proactor_connect (proactor-internal.c:97)
> ==17017==    by 0x402B23: cpool_connect (threaderciser.c:229)
> ==17017==    by 0x403120: global_connect (threaderciser.c:367)
> ==17017==    by 0x4031A5: global_do_stuff (threaderciser.c:378)
> ==17017==    by 0x403330: user_thread (threaderciser.c:397)
> ==17017==    by 0x483E568: mythread_wrapper (in 
> /nix/store/6glsqxyngs9kjkx9mqhshwfi93qfsw8q-valgrind-3.15.0/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
> ==17017==    by 0x4864EDC: start_thread (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libpthread-2.30.so)
> ==17017==    by 0x4D69A4E: clone (in 
> /nix/store/6m2k8kx8h216jlx9dg3lp4m90bz05yck-glibc-2.30/lib/libc-2.30.so)
> ==17017==  Block was alloc'd by thread #2
> ==17017== 
> {
>    <insert_a_suppression_name_here>
>    Helgrind:Race
>    fun:my_memcmp
>    fun:mutex_destroy_WRK
>    fun:pthread_mutex_destroy
>    fun:pmutex_finalize
>    fun:pcontext_finalize
>    fun:pconnection_final_free
>    fun:pconnection_cleanup
>    fun:pconnection_process
>    fun:process
>    fun:proactor_do_epoll
>    fun:pn_proactor_wait
>    fun:proactor_thread
> }
> {noformat}
> and under tsan with
> {noformat}
> 7: Test command: 
> /nix/store/nlgrx0cl1l87nx0w660lb3jksn9jdca9-python3-3.7.6/bin/python 
> "/home/jdanek/repos/qpid/qpid-proton/scripts/env.py" "--" 
> "TSAN_OPTIONS=second_deadlock_stack=1 
> suppressions=/home/jdanek/repos/qpid/qpid-proton/tests/tsan.supp" 
> "/home/jdanek/repos/qpid/qpid-proton/cmake-build-debugwithtsan/c/tests/c-threaderciser"
> 7: Test timeout computed to be: 1500
> 7: threaderciser start: threads=8, time=1, actions=[listen, close-listen, 
> connect, close-connect, wake, timeout, cancel-timeout]
> 7: ==================
> 7: WARNING: ThreadSanitizer: heap-use-after-free (pid=10748)
> 7:   Atomic read of size 1 at 0x7b680000fc00 by thread T6:
> 7:     #0 pthread_mutex_lock <null> (libtsan.so.0+0x4284b)
> 7:     #1 lock /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:144 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #2 unassign_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:602 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1979 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Previous write of size 8 at 0x7b680000fc00 by thread T8:
> 7:     #0 free <null> (libtsan.so.0+0x2fa67)
> 7:     #1 listener_final_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1747 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #2 pn_listener_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1765 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1967 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Thread T6 (tid=10755, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7:   Thread T8 (tid=10757, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7: SUMMARY: ThreadSanitizer: heap-use-after-free 
> (/nix/store/jy89v2q2zv074mvw91jgqcvkmk7yqx69-gcc-9.3.0-lib/lib/libtsan.so.0+0x4284b)
>  in pthread_mutex_lock
> 7: ==================
> 7: ==================
> 7: WARNING: ThreadSanitizer: heap-use-after-free (pid=10748)
> 7:   Read of size 1 at 0x7b680000fc36 by thread T6 (mutexes: write M63):
> 7:     #0 wake /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:415 
> (libqpid-proton-proactor.so.1+0x5714)
> 7:     #1 unassign_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:603 
> (libqpid-proton-proactor.so.1+0x5714)
> 7:     #2 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1979 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #3 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #4 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #5 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Previous write of size 8 at 0x7b680000fc30 by thread T8:
> 7:     #0 free <null> (libtsan.so.0+0x2fa67)
> 7:     #1 listener_final_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1747 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #2 pn_listener_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1765 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1967 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Mutex M63 (0x7b680000fc00) created at:
> 7:     #0 pthread_mutex_lock <null> (libtsan.so.0+0x4284b)
> 7:     #1 lock /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:144 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #2 unassign_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:602 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1979 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Thread T6 (tid=10755, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7:   Thread T8 (tid=10757, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7: SUMMARY: ThreadSanitizer: heap-use-after-free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:415 in wake
> 7: ==================
> 7: ==================
> 7: WARNING: ThreadSanitizer: heap-use-after-free (pid=10748)
> 7:   Read of size 8 at 0x7b680000fc28 by thread T6 (mutexes: write M63):
> 7:     #0 wake /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:418 
> (libqpid-proton-proactor.so.1+0x5222)
> 7:     #1 wake /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:416 
> (libqpid-proton-proactor.so.1+0x5736)
> 7:     #2 unassign_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:603 
> (libqpid-proton-proactor.so.1+0x5736)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1979 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Previous write of size 8 at 0x7b680000fc28 by thread T8:
> 7:     #0 free <null> (libtsan.so.0+0x2fa67)
> 7:     #1 listener_final_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1747 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #2 pn_listener_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1765 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1967 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Mutex M63 (0x7b680000fc00) created at:
> 7:     #0 pthread_mutex_lock <null> (libtsan.so.0+0x4284b)
> 7:     #1 lock /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:144 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #2 unassign_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:602 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1979 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Thread T6 (tid=10755, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7:   Thread T8 (tid=10757, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7: SUMMARY: ThreadSanitizer: heap-use-after-free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:418 in wake
> 7: ==================
> 7: ==================
> 7: WARNING: ThreadSanitizer: heap-use-after-free (pid=10748)
> 7:   Write of size 8 at 0x7b680000fc38 by thread T6 (mutexes: write M63, 
> write M10):
> 7:     #0 wake /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:420 
> (libqpid-proton-proactor.so.1+0x5247)
> 7:     #1 wake /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:416 
> (libqpid-proton-proactor.so.1+0x5736)
> 7:     #2 unassign_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:603 
> (libqpid-proton-proactor.so.1+0x5736)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1979 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Previous write of size 8 at 0x7b680000fc38 by thread T8:
> 7:     #0 free <null> (libtsan.so.0+0x2fa67)
> 7:     #1 listener_final_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1747 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #2 pn_listener_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1765 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1967 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Mutex M63 (0x7b680000fc00) created at:
> 7:     #0 pthread_mutex_lock <null> (libtsan.so.0+0x4284b)
> 7:     #1 lock /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:144 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #2 unassign_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:602 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1979 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Mutex M10 (0x7b5c000001c0) created at:
> 7:     #0 pthread_mutex_init <null> (libtsan.so.0+0x30d4d)
> 7:     #1 pmutex_init 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:137 
> (libqpid-proton-proactor.so.1+0x6a2b)
> 7:     #2 pn_proactor 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2103 
> (libqpid-proton-proactor.so.1+0x8302)
> 7:     #3 global_init 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:335 
> (c-threaderciser+0x4035c2)
> 7:     #4 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:564 
> (c-threaderciser+0x404708)
> 7: 
> 7:   Thread T6 (tid=10755, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7:   Thread T8 (tid=10757, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7: SUMMARY: ThreadSanitizer: heap-use-after-free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:420 in wake
> 7: ==================
> 7: ==================
> 7: WARNING: ThreadSanitizer: use of an invalid mutex (e.g. uninitialized or 
> destroyed) (pid=10748)
> 7:     #0 pthread_mutex_unlock <null> (libtsan.so.0+0x4299a)
> 7:     #1 unlock 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:145 
> (libqpid-proton-proactor.so.1+0x5747)
> 7:     #2 unassign_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:604 
> (libqpid-proton-proactor.so.1+0x5747)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1979 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Mutex M63 (0x7b680000fc00) created at:
> 7:     #0 pthread_mutex_lock <null> (libtsan.so.0+0x4284b)
> 7:     #1 lock /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:144 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #2 unassign_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:602 
> (libqpid-proton-proactor.so.1+0x570a)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1979 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xbb04)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7: SUMMARY: ThreadSanitizer: use of an invalid mutex (e.g. uninitialized or 
> destroyed) 
> (/nix/store/jy89v2q2zv074mvw91jgqcvkmk7yqx69-gcc-9.3.0-lib/lib/libtsan.so.0+0x4299a)
>  in __interceptor_pthread_mutex_unlock
> 7: ==================
> 7: ==================
> 7: WARNING: ThreadSanitizer: heap-use-after-free (pid=10748)
> 7:   Read of size 1 at 0x7b680000fc92 by thread T8 (mutexes: write M11):
> 7:     #0 post_event 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2477 
> (libqpid-proton-proactor.so.1+0xcf8c)
> 7:     #1 proactor_do_epoll 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2676 
> (libqpid-proton-proactor.so.1+0xcf8c)
> 7:     #2 pn_proactor_wait 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2803 
> (libqpid-proton-proactor.so.1+0xdef2)
> 7:     #3 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:473 
> (c-threaderciser+0x403f28)
> 7:     #4 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Previous write of size 8 at 0x7b680000fc90 by thread T8:
> 7:     #0 free <null> (libtsan.so.0+0x2fa67)
> 7:     #1 listener_final_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1747 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #2 pn_listener_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1765 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1967 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Mutex M11 (0x7b5c00000240) created at:
> 7:     #0 pthread_mutex_init <null> (libtsan.so.0+0x30d4d)
> 7:     #1 pmutex_init 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:137 
> (libqpid-proton-proactor.so.1+0x6a2b)
> 7:     #2 pn_proactor 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2104 
> (libqpid-proton-proactor.so.1+0x8316)
> 7:     #3 global_init 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:335 
> (c-threaderciser+0x4035c2)
> 7:     #4 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:564 
> (c-threaderciser+0x404708)
> 7: 
> 7:   Thread T8 (tid=10757, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7: SUMMARY: ThreadSanitizer: heap-use-after-free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2477 in post_event
> 7: ==================
> 7: ==================
> 7: WARNING: ThreadSanitizer: heap-use-after-free (pid=10748)
> 7:   Read of size 8 at 0x7b680000fc80 by thread T8 (mutexes: write M11):
> 7:     #0 post_event 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2477 
> (libqpid-proton-proactor.so.1+0xcfa4)
> 7:     #1 proactor_do_epoll 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2676 
> (libqpid-proton-proactor.so.1+0xcfa4)
> 7:     #2 pn_proactor_wait 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2803 
> (libqpid-proton-proactor.so.1+0xdef2)
> 7:     #3 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:473 
> (c-threaderciser+0x403f28)
> 7:     #4 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Previous write of size 8 at 0x7b680000fc80 by thread T8:
> 7:     #0 free <null> (libtsan.so.0+0x2fa67)
> 7:     #1 listener_final_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1747 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #2 pn_listener_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1765 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #3 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1967 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #4 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xb8fd)
> 7:     #5 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #6 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Mutex M11 (0x7b5c00000240) created at:
> 7:     #0 pthread_mutex_init <null> (libtsan.so.0+0x30d4d)
> 7:     #1 pmutex_init 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:137 
> (libqpid-proton-proactor.so.1+0x6a2b)
> 7:     #2 pn_proactor 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2104 
> (libqpid-proton-proactor.so.1+0x8316)
> 7:     #3 global_init 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:335 
> (c-threaderciser+0x4035c2)
> 7:     #4 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:564 
> (c-threaderciser+0x404708)
> 7: 
> 7:   Thread T8 (tid=10757, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7: SUMMARY: ThreadSanitizer: heap-use-after-free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2477 in post_event
> 7: Test command: 
> /nix/store/nlgrx0cl1l87nx0w660lb3jksn9jdca9-python3-3.7.6/bin/python 
> "/home/jdanek/repos/qpid/qpid-proton/scripts/env.py" "--" 
> "TSAN_OPTIONS=second_deadlock_stack=1 
> suppressions=/home/jdanek/repos/qpid/qpid-proton/tests/tsan.supp" 
> "/home/jdanek/repos/qpid/qpid-proton/cmake-build-debugwithtsan/c/tests/c-threaderciser"
> 7: Test timeout computed to be: 1500
> 7: threaderciser start: threads=8, time=1, actions=[listen, close-listen, 
> connect, close-connect, wake, timeout, cancel-timeout]
> 7: ==================
> 7: WARNING: ThreadSanitizer: data race (pid=10413)
> 7:   Write of size 8 at 0x7b6800000028 by thread T4:
> 7:     #0 free <null> (libtsan.so.0+0x2fa67)
> 7:     #1 listener_final_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1747 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #2 pn_listener_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1765 
> (libqpid-proton-proactor.so.1+0xafd0)
> 7:     #3 listener_process 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1895 
> (libqpid-proton-proactor.so.1+0xdb4c)
> 7:     #4 process 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2400 
> (libqpid-proton-proactor.so.1+0xdb4c)
> 7:     #5 proactor_do_epoll 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2581 
> (libqpid-proton-proactor.so.1+0xdb4c)
> 7:     #6 pn_proactor_wait 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2803 
> (libqpid-proton-proactor.so.1+0xdef2)
> 7:     #7 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:473 
> (c-threaderciser+0x403f28)
> 7:     #8 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Previous read of size 8 at 0x7b6800000028 by thread T2:
> 7:     #0 listener_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1982 
> (libqpid-proton-proactor.so.1+0xb506)
> 7:     #1 pn_proactor_done 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:2837 
> (libqpid-proton-proactor.so.1+0xb506)
> 7:     #2 proactor_thread 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:478 
> (c-threaderciser+0x403f9d)
> 7:     #3 <null> <null> (libtsan.so.0+0x2e0b6)
> 7: 
> 7:   Thread T4 (tid=10418, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7:   Thread T2 (tid=10416, running) created by main thread at:
> 7:     #0 pthread_create <null> (libtsan.so.0+0x3055b)
> 7:     #1 main 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/threaderciser.c:572 
> (c-threaderciser+0x4047d7)
> 7: 
> 7: SUMMARY: ThreadSanitizer: data race 
> (/nix/store/jy89v2q2zv074mvw91jgqcvkmk7yqx69-gcc-9.3.0-lib/lib/libtsan.so.0+0x2fa67)
>  in free
> 7: ==================
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to