[kudu-CR] KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization
Todd Lipcon has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/9409 ) Change subject: KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization .. KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization libunwind uses double-checked locking for initialization, which isn't technically safe. We previously tried to work around this by calling into the stack trace library before starting any kudu::Threads, but that still left us open to races in unit tests like rw_mutex-test which uses std::thread. This patch changes the forced single-threaded initialization to use GoogleOnce instead. Prior to this patch, looping rw_mutex-test on TSAN failed 12/1000 times. With the patch it passed 1000/1000. Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c Reviewed-on: http://gerrit.cloudera.org:8080/9409 Tested-by: Kudu Jenkins Reviewed-by: Mike Percy--- M src/kudu/util/debug-util.cc M src/kudu/util/thread.cc 2 files changed, 26 insertions(+), 5 deletions(-) Approvals: Kudu Jenkins: Verified Mike Percy: Looks good to me, approved -- To view, visit http://gerrit.cloudera.org:8080/9409 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c Gerrit-Change-Number: 9409 Gerrit-PatchSet: 4 Gerrit-Owner: Todd Lipcon Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Mike Percy Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization
Mike Percy has posted comments on this change. ( http://gerrit.cloudera.org:8080/9409 ) Change subject: KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization .. Patch Set 3: Code-Review+2 -- To view, visit http://gerrit.cloudera.org:8080/9409 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c Gerrit-Change-Number: 9409 Gerrit-PatchSet: 3 Gerrit-Owner: Todd LipconGerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Mike Percy Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon Gerrit-Comment-Date: Fri, 23 Feb 2018 20:35:59 + Gerrit-HasComments: No
[kudu-CR] KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization
Hello Tidy Bot, Mike Percy, Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/9409 to look at the new patch set (#3). Change subject: KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization .. KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization libunwind uses double-checked locking for initialization, which isn't technically safe. We previously tried to work around this by calling into the stack trace library before starting any kudu::Threads, but that still left us open to races in unit tests like rw_mutex-test which uses std::thread. This patch changes the forced single-threaded initialization to use GoogleOnce instead. Prior to this patch, looping rw_mutex-test on TSAN failed 12/1000 times. With the patch it passed 1000/1000. Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c --- M src/kudu/util/debug-util.cc M src/kudu/util/thread.cc 2 files changed, 26 insertions(+), 5 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/09/9409/3 -- To view, visit http://gerrit.cloudera.org:8080/9409 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c Gerrit-Change-Number: 9409 Gerrit-PatchSet: 3 Gerrit-Owner: Todd LipconGerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Mike Percy Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization
Hello Mike Percy, Kudu Jenkins, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/9409 to look at the new patch set (#2). Change subject: KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization .. KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization libunwind uses double-checked locking for initialization, which isn't technically safe. We previously tried to work around this by calling into the stack trace library before starting any kudu::Threads, but that still left us open to races in unit tests like rw_mutex-test which uses std::thread. This patch changes the forced single-threaded initialization to use GoogleOnce instead. Prior to this patch, looping rw_mutex-test on TSAN failed 12/1000 times. With the patch it passed 1000/1000. Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c --- M src/kudu/util/debug-util.cc M src/kudu/util/thread.cc 2 files changed, 26 insertions(+), 5 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/09/9409/2 -- To view, visit http://gerrit.cloudera.org:8080/9409 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c Gerrit-Change-Number: 9409 Gerrit-PatchSet: 2 Gerrit-Owner: Todd LipconGerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Mike Percy Gerrit-Reviewer: Todd Lipcon
[kudu-CR] KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization
Mike Percy has posted comments on this change. ( http://gerrit.cloudera.org:8080/9409 ) Change subject: KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization .. Patch Set 1: (2 comments) http://gerrit.cloudera.org:8080/#/c/9409/1/src/kudu/util/debug-util.cc File src/kudu/util/debug-util.cc: http://gerrit.cloudera.org:8080/#/c/9409/1/src/kudu/util/debug-util.cc@522 PS1, Line 522: void PrimeLibunwind() { nit: static void http://gerrit.cloudera.org:8080/#/c/9409/1/src/kudu/util/debug-util.cc@523 PS1, Line 523: #ifdef __linux__ nit: because the only call is inside an #ifdef __linux__ this whole function can be inside one as well -- To view, visit http://gerrit.cloudera.org:8080/9409 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c Gerrit-Change-Number: 9409 Gerrit-PatchSet: 1 Gerrit-Owner: Todd LipconGerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Mike Percy Gerrit-Comment-Date: Fri, 23 Feb 2018 02:25:39 + Gerrit-HasComments: Yes
[kudu-CR] KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization
Hello Mike Percy, I'd like you to do a code review. Please visit http://gerrit.cloudera.org:8080/9409 to review the following change. Change subject: KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization .. KUDU-2291 (part 8): fix a TSAN issue with libunwind initialization libunwind uses double-checked locking for initialization, which isn't technically safe. We previously tried to work around this by calling into the stack trace library before starting any kudu::Threads, but that still left us open to races in unit tests like rw_mutex-test which uses std::thread. This patch changes the forced single-threaded initialization to use GoogleOnce instead. Prior to this patch, looping rw_mutex-test on TSAN failed 12/1000 times. With the patch it passed 1000/1000. Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c --- M src/kudu/util/debug-util.cc M src/kudu/util/thread.cc 2 files changed, 17 insertions(+), 5 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/09/9409/1 -- To view, visit http://gerrit.cloudera.org:8080/9409 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I522b6553e9cb9a30d7106ff55ad119f7df1f949c Gerrit-Change-Number: 9409 Gerrit-PatchSet: 1 Gerrit-Owner: Todd LipconGerrit-Reviewer: Mike Percy