I have done some extensive research on this and I am able to confirm that while Bug #1864864 does solve a class of issues, it does not solve the one affecting Open vSwitch, as it does rely on PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP:
I will add that in my initial tests of doing this inside a small VM with a Docker container, it did not hang after running for 10-15 minutes, but it immediately hung on a much more powerful machine. I will file a bug to try and get the patch above SRU'd into glibc as well and hopefully that will be the end of it.
I have done some extensive research on this and I am able to confirm that while Bug #1864864 does solve a class of issues, it does not solve the one affecting Open vSwitch, as it does rely on PTHREAD_ RWLOCK_ PREFER_ WRITER_ NONRECURSIVE_ NP:
https:/ /github. com/openvswitch /ovs/blob/ 0de1b425962db07 3ebbaa3ddbde445 580afda840/ lib/ovs- thread. c#L247- L248
And when running the reproducer here:
https:/ /sourceware. org/bugzilla/ show_bug. cgi?id= 23861
By doing the following:
``` /sourceware. org/bugzilla/ attachment. cgi?id= 11382 -o bug23861.c writer- nonrecursive; done
curl https:/
sed -i 's/do_exit = 0/do_exit(0)/' bug23861.c
g++ bug23861.c -lpthread -o bug23861
for ((x=1;x<100;x++)) ; do echo $x;date;./bug23861 --prefer-
```
I will add that in my initial tests of doing this inside a small VM with a Docker container, it did not hang after running for 10-15 minutes, but it immediately hung on a much more powerful machine. I will file a bug to try and get the patch above SRU'd into glibc as well and hopefully that will be the end of it.