-
Notifications
You must be signed in to change notification settings - Fork 122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
thread sanitizer finds real bugs in fractal tree software #396
Open
prohaska7
wants to merge
27
commits into
percona:master
Choose a base branch
from
prohaska7:tsan-10
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
27 commits
Select commit
Hold shift + click to select a range
e082a96
remove test timeout property so that we can use the ctest --timeout p…
prohaska7 5f357d6
gcc7 raises switch/case fall through issues. annotate valid cases.
prohaska7 9608927
fix == ?= operator precedence issues identified by gcc7
prohaska7 6db8c7d
avoid gcc7 warning about truncated snprintf format strings
prohaska7 6e45858
pfs needs to destroy its key objects when the ft library is uninitial…
prohaska7 0e65fe9
Merge commit 'e082a9696e14c5f7bfe286962280f85cffed663d' into rm-ctest…
prohaska7 1ba1dfe
fix directory_lock test, was passing uninitialzed data to comparison …
prohaska7 d7dbfa6
turn off 2 clang warnings to compile with clang 4.0.1
prohaska7 1c63ac8
add explicit unsafe operators to race tools so that tsan suppression …
prohaska7 9071df1
fix data races in portability tests
prohaska7 525665e
fix data races in util tests
prohaska7 6bf0a38
fix data race in minicron
prohaska7 2cd2b35
fix data races in locktree tests
prohaska7 525177f
mark cachetable status counter updates as multi-thread unsafe
prohaska7 ab4d26b
mark flusher status counter updates as multi-thread unsafe
prohaska7 f9d363f
fix data races in ft tests
prohaska7 23bc4d9
mark unsafe reads in checkpoint status
prohaska7 0daea59
fix data races in ydb tests
prohaska7 14e5507
mark locktree read of current lock memory as unsafe
prohaska7 e9e6c78
add ydb status variable updates as racy by design
prohaska7 d80bee7
add ydb status variable updates as racy by design
prohaska7 6ff7045
mark ft read of in memory logical rows as racy by design
prohaska7 976328e
The thread sanitizer reports thousands of warnings when running the f…
prohaska7 271ce1b
fix data races on locktree current lock memory by using c++ atomics
prohaska7 1dee4ce
fix locktree data race on reference count by using c++ atomics
prohaska7 530a157
fix races on cachetable current size and evictor thread state
prohaska7 2ddec4b
fix data races in ydb tests
prohaska7 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes 'class evictor' not a POD and triggers static assertion via 'ENSURE_POD(evictor);' in cachetable.cc around line 3611
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, all of these atomic_type_t specializations are incorrect as they do not exist in all supported back versions of glib, must use std::atomic instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so for backward compatibility, use std::atomic in place of std::atomic_int?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, these all need to be the older style specializations std::atomic<uint32_t>, etc... I easily changed those but the bigger issue is that by adding this to evictor (and possibly other class/structs) introduces non trivial layout and construction/destruction/copy semantics, which then causes failure of std::is_pod and triggers the static_assertion in ENSURE_POD. I do not recall offhand what the need for evictor and others to be POD was and what it would take to eliminate it.
Alternately, since the evictor is really just a singleton, a hack could be to just to move this to global scope, but that IMHO is going the wrong direction in the greater scheme to properly "C++-ize" the FT library.