-
Notifications
You must be signed in to change notification settings - Fork 5
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
Prototyping - Python frames #262
Closed
Closed
Conversation
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
* Add build-id information to the pprof mappings
Formalized the tracepoint/event parser using bison/flex
Make parser reentrant Co-authored-by: sanchda <[email protected]>
Add a parameter to trigger tests in the reliability env repository on a specific branch
This will reduce the amount of lost events for allocations
Use `add_p_vaddr = true` when calling dwfl_report_elf, this allows to pass bias (ie. offset between a process address and the corresponding elf virtual address) instead of base (ie. process address of the start of first LOAD vegment).
* Allow usage of jemalloc in ddprof * Allow installation of jemalloc on alpine * Add a documentation note to check on jemalloc stats
* v0.10.1 - Update changelog with major updates - Update version number
Code was correct but this should make it clear to codeql.
* Minor env fixes - Fix for zsh - Fix for gcc 12
* Fix crash when using custom stack When the user is using a custom stack (different from the thread's stack) we would crash when copying the stack to the ring buffer. This adds a bound check (checking that the current SP is within the stack). If we are not within the thread's stack, we will just push an empty sample. To do better, we would need access to the runtime's API to understand the stack's structure. Possible Limitation with the approach: There is a case where the stack would grow and we would not detect the growth of the stack, however we would not crash, we would simply not sample that stack.
* Upgrade alpine to 3.17.2 * Upgrade elfutils to 0.188 * Allow builds on Ubuntu 22.04 * Upgrade google benchmark to 1.7.1 * Launch local build fix Ensure we have an option to build docker build image with no-cache * Minor unwinding fix Skip adding invalid frames when we finish on null PC. This can happen when following frame pointer unwinding and is expected. * Minor loader.c adjustments to print dl_open errors * Declare getentropy to ensure we can run with older libc versions
Call tag validation on the full key value string (instead of calling it for key and value). In the current implementation we were not allowing IDs to be forwarded as tags.
* Use JITDump to find the symbol information when available. JITDump Information is stored per PID * Align JITDump and perfmap symbolization behaviour
This also fixes some of the libc issues that were coming up during codeql builds on ubuntu 22
* Changelog update 0.11.0 release notes * Adjust documentation based on onboarding feedback
The scripts that push automatically to GitHub require the jq dependency
* Add a make target to update the documentation with ddprof options * Update the help documentation
* Enable UDS settings Ensure UDS settings are allowed by the exporter
* Add improvements and tests for Rust demangling --------- Co-authored-by: sanchda <[email protected]>
* Adjust APIs to libdatadog 2.1.0
Ensure we drop the request error object in case of error. This avoids leaking the error structure.
* Keep track of live allocated memory - Ensure we instrument frees - Introduce a live allocation object - Add mmap hooks - Add more m(un)map overrides * Minor refactoring for Watcher Configurations Removal of "<=" operators for event configuration. * Clear memory tracking state beyond a fixed bound * Live Heap - Pid cleanup - Clear aggregated live information when we remove a PID - Re-introduce the watcher dimension in the aggregation of allocations * Live allocation - unique stacks Unify the stacks when aggregating live allocations. * Live allocation - out of order deallocations Fix behaviour in case events arrive out of order for deallocations --------- Co-authored-by: Nicolas Savoire <[email protected]>
As we now have a better test framework with prof-correctness, we can remove the native library code paths. We would have to re-think the design if we want to integrate with other profilers.
Move the downstream repository to apm-reliability
In the case of whole host, we continuously get new files. As we were keeping file descriptors to all the files, we were quickly reaching a limit.
* Minor refactoring - Extract presets - As the preset logics grows, I wanted to extract it from the ddprof_context init - Minor renaming / namespacing refactoring
In case of incomplete stacks, we add an [incomplete] qualifier. We were adding this qualifier too often This PR adds new cases where we should consider the stack as complete.
* Fix regression for short lived processes This is a quick fix that consists in refreshing the path for files to the last know location. A more long term fix would consist in finding the absolute path across containers.
On arm64, pthread_attr_t is bigger in glibc than in musl. Consequently when pthread_getattr_np zeroes the struct, it writes out-of-bounds. Dirty fix is to add some padding at the end of the struct, this works because additional space present in glibc is not actually used.
* Mask API key when printing parameters This is to prevent API keys from being logged
Some libc functions are unsafe to use in injected lib because their ABI is different between musl and glibc. Add a small python script that check for the use of these functions.
It seems that since there are no "real" jobs in gitlab pipeline, only a trigger for a downstream pipeline, gitsync does not push any status check to github (status checks are associated to "real" jobs). The workaround it to create an actual job whose status depends on status of downstream pipeline.
076966b
to
ca82dcb
Compare
closing in favour of #268 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What does this PR do?
A brief description of the change being made with this pull request.
Motivation
What inspired you to submit this pull request? In order to motivate your point, it may be valuable to explain why this change is useful or what problem is being solved.
Additional Notes
This is the section to put technical guidance/constraints, call out potential regressions, cite sources, and in general offer some exposition on the how of the PR. This section doesn't need to be incredibly detailed, but it makes life easier for reviewers!
How to test the change?
Describe here in detail how the change can be validated. This is a great section to call out specific tests you've added or improved, or to acknowledge code sections which are particularly difficult to test.