fix : SharedResourceManagedEnvContainer struct size reduction #789
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.
Description:
This PR fixes a performance issue in your codebase.
While triaging your project, our bug fixing tool found that -
In file
sharedresourceloop.go
theres is a structSharedResourceManagedEnvContainer
whose size can be reduced to improve memory efficiency.sharedresourceloop.go
The way the struct above is defined, memory allocation for it would look something like this -
Which results in a total of 72 bytes. The extra padding bytes comes from the fact that in case of structs memory is allocated in contiguous, byte-aligned blocks to fields in the order that they are defined.
Solution
The fix is to define the struct in such a way that least number of padding bytes are introduced. The following definition results in allocation of only 48 bytes of memory as opposed to previous 72 bytes.
References
CLA Requirements:
This section is only relevant if your project requires contributors to sign a Contributor License Agreement (CLA) for external contributions.
All contributed commits are already automatically signed off.
The meaning of a signoff depends on the project, but it typically certifies that committer has the rights to submit this work under the same license and agrees to a Developer Certificate of Origin (see https://developercertificate.org/ for more information).
Sponsorship and Support:
This work is done by the security researchers from OpenRefactory and is supported by the Open Source Security Foundation (OpenSSF): Project Alpha-Omega. Alpha-Omega is a project partnering with open source software project maintainers to systematically find new, as-yet-undiscovered vulnerabilities in open source code - and get them fixed - to improve global software supply chain security.
The bug is found by running the iCR tool by OpenRefactory, Inc. and then manually triaging the results.