Skip to content

Latest commit

 

History

History
3 lines (3 loc) · 988 Bytes

2025-02-20-rule-22-16-update-aliasing-for-performance.md

File metadata and controls

3 lines (3 loc) · 988 Bytes
  • RULE-22-16, ERR57-CPP, A15-1-4 - MutexObjectsNotAlwaysUnlocked.ql, DoNotLeakResourcesWhenHandlingExceptions.ql, ValidResourcesStateBeforeThrow.ql:
    • Shared module ResourceLeakAnalysis.qll changed to not get aliases recursively for simplicity and improved performance. The recent update to these queries had logic intending to handle the case where an allocation node is an alias of a parent node, and the free operation releases that parent node. However, the behavior was incorrectly defined and not working, and in the presence of performance issues this behavior has been removed.
    • (RULE-22-16 only) The alias behavior has been updated to compare expressions with HashCons instead of GlobalValueNumbering for higher performance. GVN is more expensive generally, seemed to introduce low performance joins secondarily, and is stricter than HashCons in a contravening position, meaning a stricter analysis introduces a higher likelihood of false positives.