Uploaded image for project: 'Qpid Proton'
  1. Qpid Proton
  2. PROTON-2225

Set -DTHREADERCISER=ON by default, to prevent regressions

    XMLWordPrintableJSON

Details

    • Test
    • Status: Closed
    • Major
    • Resolution: Fixed
    • proton-c-0.31.0
    • proton-c-0.32.0
    • build
    • None
    • Patch

    Description

      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

      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
      }
      

      and under tsan with

      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: ==================
      

      Other issues, mentioned in comments below, collected here

      Furthermore, I've seen it sometimes freeze on older clang (flaky on xenial https://travis-ci.com/github/jiridanek/qpid-proton/jobs/337482058#L2049, freezes reliably on xcode https://travis-ci.com/github/jiridanek/qpid-proton/jobs/337466798#L2165) and flaky leak on gcc xenial, https://travis-ci.com/github/jiridanek/qpid-proton/jobs/337466791#L1779:

      6: Test command: /opt/pyenv/shims/python "/home/travis/build/jiridanek/qpid-proton/scripts/env.py" "--" "TEST_EXE_PREFIX=/usr/bin/valgrind --tool=memcheck --leak-check=full --error-exitcode=42 --quiet --suppressions=/home/travis/build/jiridanek/qpid-proton/tests/valgrind.supp" "/usr/bin/valgrind" "--tool=memcheck" "--leak-check=full" "--error-exitcode=42" "--quiet" "--suppressions=/home/travis/build/jiridanek/qpid-proton/tests/valgrind.supp" "/home/travis/build/jiridanek/qpid-proton/build/c/tests/c-threaderciser"
      6: Test timeout computed to be: 1500
      6: threaderciser start: threads=8, time=1, actions=[listen, close-listen, connect, close-connect, wake, timeout, cancel-timeout]
      6: ==11750== 64 bytes in 1 blocks are definitely lost in loss record 1 of 1
      6: ==11750==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
      6: ==11750==    by 0x40217A: connection_ctx_new (threaderciser.c:211)
      6: ==11750==    by 0x40217A: cpool_connect.part.3 (threaderciser.c:226)
      6: ==11750==    by 0x402CC6: cpool_connect (threaderciser.c:225)
      6: ==11750==    by 0x402CC6: handle (threaderciser.c:425)
      6: ==11750==    by 0x402CC6: proactor_thread (threaderciser.c:476)
      6: ==11750==    by 0x504E6B9: start_thread (pthread_create.c:333)
      6: ==11750== 
       6/46 Test  #6: c-threaderciser ..................***Failed   95.41 sec
      

      Another flaky occurence, assertion fail on macOS with libuv, https://travis-ci.com/github/jiridanek/qpid-proton/jobs/337488524#L1931

      6: Test command: /usr/local/opt/python/libexec/bin/python "/Users/travis/build/jiridanek/qpid-proton/scripts/env.py" "--" "/Users/travis/build/jiridanek/qpid-proton/build/c/tests/c-threaderciser"
      6: Test timeout computed to be: 1500
      6: threaderciser start: threads=8, time=1, actions=[listen, close-listen, connect, close-connect, wake, timeout, cancel-timeout]
      6: Assertion failed: (p->active > 0), function remove_active_lh, file /Users/travis/build/jiridanek/qpid-proton/c/src/proactor/libuv.c, line 392.
       6/31 Test  #6: c-threaderciser ..................***Failed    0.18 sec
      

      The threaderciser itself is not deterministic, and it is running for a fairly short time in the CI, so it is actually expected that the failures will be flaky.

      Another version of the leak trace from valgrind (now suppressed)

      threaderciser start: threads=8, time=1, actions=[listen, close-listen, connect, close-connect, wake, timeout, cancel-timeout]
      ==3008== 128 bytes in 2 blocks are definitely lost in loss record 1 of 1
      ==3008==    at 0x4C29F73: malloc (vg_replace_malloc.c:309)
      ==3008==    by 0x401F3A: connection_ctx_new (threaderciser.c:211)
      ==3008==    by 0x401F3A: cpool_connect.part.3 (threaderciser.c:226)
      ==3008==    by 0x402636: cpool_connect (threaderciser.c:367)
      ==3008==    by 0x402636: global_connect (threaderciser.c:367)
      ==3008==    by 0x402747: global_do_stuff (threaderciser.c:378)
      ==3008==    by 0x402B17: user_thread (threaderciser.c:397)
      ==3008==    by 0x504BEA4: start_thread (in /usr/lib64/libpthread-2.17.so)
      ==3008==    by 0x5E8C8DC: clone (in /usr/lib64/libc-2.17.so)
      ==3008== 
      

      edit: another variant of the valgrind trace (now suppressed)

      threaderciser start: threads=8, time=1, actions=[listen, close-listen, connect, close-connect, wake, timeout, cancel-timeout]
      ==3100== 64 bytes in 1 blocks are definitely lost in loss record 1 of 1
      ==3100==    at 0x4C28A2E: malloc (vg_replace_malloc.c:270)
      ==3100==    by 0x4020B1: cpool_connect (threaderciser.c:211)
      ==3100==    by 0x4027E8: proactor_thread (threaderciser.c:425)
      ==3100==    by 0x5043AA0: start_thread (in /lib64/libpthread-2.12.so)
      ==3100==    by 0x5FF1C4C: clone (in /lib64/libc-2.12.so)
      ==3100== 
      

      edit: completely new valgrind issue, this time invalid access, not a leak

      6: threaderciser start: threads=8, time=1, actions=[listen, close-listen, connect, close-connect, wake, timeout, cancel-timeout]
      6: ==3011== Thread 6:
      6: ==3011== Invalid read of size 8
      6: ==3011==    at 0x4E3D2F0: pn_proactor_listen (epoll.c:1716)
      6: ==3011==    by 0x402078: lpool_listen.part.5 (threaderciser.c:285)
      6: ==3011==    by 0x4027C8: lpool_listen (threaderciser.c:379)
      6: ==3011==    by 0x4027C8: global_do_stuff (threaderciser.c:379)
      6: ==3011==    by 0x402B17: user_thread (threaderciser.c:397)
      6: ==3011==    by 0x504BEA4: start_thread (in /usr/lib64/libpthread-2.17.so)
      6: ==3011==    by 0x5E8C8DC: clone (in /usr/lib64/libc-2.17.so)
      6: ==3011==  Address 0x7e15188 is 40 bytes inside a block of size 1,408 free'd
      6: ==3011==    at 0x4C2B06D: free (vg_replace_malloc.c:540)
      6: ==3011==    by 0x4E401F8: listener_process (epoll.c:1895)
      6: ==3011==    by 0x4E401F8: process (epoll.c:2400)
      6: ==3011==    by 0x4E401F8: proactor_do_epoll (epoll.c:2581)
      6: ==3011==    by 0x40287F: proactor_thread (threaderciser.c:473)
      6: ==3011==    by 0x504BEA4: start_thread (in /usr/lib64/libpthread-2.17.so)
      6: ==3011==    by 0x5E8C8DC: clone (in /usr/lib64/libc-2.17.so)
      6: ==3011==  Block was alloc'd at
      6: ==3011==    at 0x4C2C089: calloc (vg_replace_malloc.c:762)
      6: ==3011==    by 0x4E3C4C6: pn_listener (epoll.c:1633)
      6: ==3011==    by 0x40201F: listener_ctx_new (threaderciser.c:264)
      6: ==3011==    by 0x40201F: lpool_listen.part.5 (threaderciser.c:282)
      6: ==3011==    by 0x4027C8: lpool_listen (threaderciser.c:379)
      6: ==3011==    by 0x4027C8: global_do_stuff (threaderciser.c:379)
      6: ==3011==    by 0x402B17: user_thread (threaderciser.c:397)
      6: ==3011==    by 0x504BEA4: start_thread (in /usr/lib64/libpthread-2.17.so)
      6: ==3011==    by 0x5E8C8DC: clone (in /usr/lib64/libc-2.17.so)
      6: ==3011== 
       6/28 Test  #6: c-threaderciser ..................***Failed   12.89 sec
      

      Attachments

        Issue Links

          Activity

            People

              jdanek Jiri Daněk
              jdanek Jiri Daněk
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: