On Wed, Oct 07, 2020 at 09:50:35AM +0800, Junchang Wang wrote: > On Tue, Oct 06, 2020 at 08:41:49AM -0700, Paul E. McKenney wrote: > >On Tue, Oct 06, 2020 at 02:40:20PM +0800, Junchang Wang wrote: > >> On Mon, Oct 05, 2020 at 03:12:22PM -0700, Paul E. McKenney wrote: > >> >On Sat, Oct 03, 2020 at 09:19:25AM -0700, Paul E. McKenney wrote: > >> >> On Sat, Oct 03, 2020 at 12:28:47PM +0800, Junchang Wang wrote: > >> > > >> >[ . . . ] > >> > > >> >> But sadly, this change does not fix this bug: > >> >> > >> >> $ ./hash_bkt_hazptr --schroedinger --nreaders 1 --duration 1000 --updatewait 0 --nbuckets 8192 --elems/writer 8192 > >> >> Segmentation fault (core dumped) > >> >> > >> >> Can't have everything. ;-) > >> >> > >> >> It appears that hashtorture manages to fail to call the per-thread > >> >> hazard-pointers initialization on some paths, so it is no surprise > >> >> that Junchang's fix doesn't fix this bug. > >> > > >> > Thanx, Paul > >> > > >> >------------------------------------------------------------------------ > >> > > >> >commit 2533decebb7fca65d2860174246966f5ed255dd0 > >> >Author: Paul E. McKenney <paulmck@xxxxxxxxxx> > >> >Date: Mon Oct 5 15:10:03 2020 -0700 > >> > > >> > datastruct/hash: Add missing hash_register_thread() > >> > > >> > The zoo_test() function was missing the hash_register_thread() invocation > >> > that is required to make hazard pointers work correctly. The lack > >> > of this invocation results in a segmentation violation. This commit > >> > therefore adds this call. > >> > > >> > Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxx> > >> > > >> > >> Hi Paul, > >> > >> This patch fixes the bug, and now "./hash_bkt_hazptr --schroedinger" works > >> correctly on my servers. Thanks a lot. > > > >Thank you for testing! May I apply your Tested-by? > > Hi Paul, > > I'm very happy that I can help improve perfbook. Please add a > > Tested-by: Junchang Wang <junchang2020@xxxxxxxxx> Applied, thank you! Thanx, Paul > Thanks, > --Junchang > > > > Thanx, Paul > > > >> --Junchang > >> > >> >diff --git a/CodeSamples/datastruct/hash/hashtorture.h b/CodeSamples/datastruct/hash/hashtorture.h > >> >index 6d30cb8..7d43e11 100644 > >> >--- a/CodeSamples/datastruct/hash/hashtorture.h > >> >+++ b/CodeSamples/datastruct/hash/hashtorture.h > >> >@@ -1211,6 +1211,7 @@ void zoo_test(void) > >> > for (i = 0; i < nupdaters * elperupdater; i++) { > >> > sprintf(&zoo_names[ZOO_NAMELEN * i], "a%ld", i); > >> > } > >> >+ hash_register_thread(); > >> > > >> > zhep = malloc(sizeof(*zhep)); > >> > BUG_ON(!zhep);