-
Notifications
You must be signed in to change notification settings - Fork 7
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
Sanitizers #101
Sanitizers #101
Conversation
🔧 Report generated by pr-comment-scanbuild Scan-Build Report
Bug Summary
Reports
|
Add atomic load
Ensure we have an aligned memory access to remove the asan warning
Ensure that we load the lock value in the loop
Ensure we load the value using an atomic primitive when accessing the call trace storage
- Minor refactor to remove the volatile keyword - Added some atomic primitives to avoid a TSan warning on the read of the value
- Minor fix on thread filter APIs
ScopeDesc may not be able to resolve method object
gradle/configurations.gradle
Outdated
} | ||
|
||
def locateLibtsan() { | ||
def libtsan_preinit = locate('libtsan_preinit.o') |
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.
I do not require this to build locally. Is this required in CI ?
- spinlock - relaxed load - ctimer - avoid possible leak in timers
Minor: Silence an UMR in the callTraceStorage as mmap is not correctly instrumented
Relax the ordering constraints
scenarios=$(cat ./artifacts/failures.txt | tr '\n' ',') | ||
echo "Failed scenarios: $scenarios" | ||
|
||
# curl -X POST "${{ secrets.SLACK_WEBHOOK }}" \ |
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.
Do we want to leave notifications ?
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.
Yes. Once we are ready to merge we should uncomment this block
table->_size = 0; | ||
// The reset is not useful with the anon mmap setting the memory is zeroed. | ||
// However this silences a false positive and should not have a performance impact. | ||
table->clear(); |
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.
I could make this a conditional change. I do not think it matters in terms of performance, as it is a memset at startup and on growth.
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.
Considering that the next sub-table is 2x size of the previous one the number of memset calls should not get high.
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.
LGTM
What does this PR do?:
Sanitizers
Various TSan fixes
Elf parser fixes
CI
Motivation:
Better static analysis
Additional Notes:
You can now run various build configurations through
Additionally the library can be used to run on other types of workloads.
To avoid deadly signal issues on ubuntu 22, I had to run
because of actions/runner-images#9491
How to test the change?:
This is run within our CI daily.
For Datadog employees:
credentials of any kind, I've requested a review from
@DataDog/security-design-and-guidance
.Unsure? Have a question? Request a review!