-
-
Notifications
You must be signed in to change notification settings - Fork 55
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
Release v3.5.0 #170
Release v3.5.0 #170
Conversation
When trying to profile a child process that is not recognised as Python process, Austin tries to resolve the interpreter state too many times, causing poor overall performance. This change ensures that if we fail to attach to a child Process we give up quickly to allow for samples to be collected efficiently for the processes that are correctly identified as Python processes.
During testing, some minor multiprocess issues were identified and resolved.
This change introduces the code and frame header files with content taken out of the stack header for better source code modularity.
The architectures build and release workflow share the same build script. This has been factored out into a script to reduce duplication and improve maintenance.
The libbfd project is affected by a known issue that is marked as WONTFIX. However, we can easily implement a workaround to allow austinp to be built on Linux distros that don't ship a patched version of the libbfd sources where the issue is removed. Fixes #152.
The alternative output format was a hack to allow for a quick visualisation with line breakdown using existing flame graph visualisation tools. If required, the same effect can be obtained with ad-hoc tools and therefore it is not necessary to offer this option from Austin. The benefit is a slight simplification of the CLI interface.
We use a hash lookup structure instead of plain lookup arrays in multiprocessing support to reduce the overall memory requirements for Austin when sampling child processes.
This change allows Austin to infer the PID of a process running in a different PID namespace (e.g. containers) so that the pthread TID field offset can be computed reliably in this case. Previously, the inference would fail and cause an infinite loop.
GCC provides the cleanup attribute which can be used to run a cleanup function when an auto function local variables goes out of scope. We make use of this to refactor and simplify the code in places where resources are used locally but not returned to the caller.
A previous change has introduced a helper to open PID-based files from procfs. This change makes use of the helper in other places too for code reuse.
This change mimics the improvements done for Linux for detecting the correct binary files to analyse for symbols and memory maps.
This change aligns the Python detection algorithm to the implementation for the other supported platforms.
This change adds support for the extra column-level information exported by the location table of Python 3.11 code objects. The finer-graied location data is made available though the MOJO binary format only.
When the -Werror option was added, it caused clang to error on the use of the ignored -s option. This resulted in build failures on macOS for the conda-forge package (see conda-forge/austin-feedstock#21). This change adds the -Wno-unused-command-line-argument option to prevent the compiler from treating unused command line options as errors while still treating all other warnings as errors.
Codecov ReportBase: 71.63% // Head: 70.29% // Decreases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## master #170 +/- ##
==========================================
- Coverage 71.63% 70.29% -1.35%
==========================================
Files 23 25 +2
Lines 2454 2474 +20
Branches 716 730 +14
==========================================
- Hits 1758 1739 -19
- Misses 387 410 +23
- Partials 309 325 +16
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
|
See the changelog for details.