Exception safety#211
Conversation
There was a problem hiding this comment.
Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.
|
Thank you to @ConradDrescher for opening PR 211, and to Kris Coester and Alexander Shepil for the patch commits. The PR found real problems in Gecode's exception-safety and memory-management paths, especially around failed cloning, I am going to close this PR as superseded by PR #212 rather than merge it directly. The replacement branch reimplements the accepted parts with deterministic fault-injection tests and sanitizer validation. That review also found a few places where the final ownership rule should be different from the one encoded in this pr. This PR provided the starting observations, and the replacement branch notes the relevant authors from this pr in the changelog and in source-file contributor lists where the final change is substantially based on the submitted work.
In summary, this pr identified valuable defects, and several of its ideas are present in the final branch. The replacement branch is shaped differently because the tests made the ownership and recovery contracts explicit, and in a few cases those contracts disagreed with the submitted patch shape. |
Close follow-up gaps found while validating the local clone, IntSet, and MiniModel exception-safety invariants. In particular, recover advisor-copy state on failure, keep IntSet fault accounting consistent when allocation throws, and make MiniModel ownership cleanup robust under injected heap failures. Reference: #211
Add release-note entries and file-header attribution for the clone, IntSet, MiniModel, fault-injection, and sanitizer-stability changes. PR 211 is kept as release-note issue metadata and as a reference for original patch authorship where that context matters. Reference: #211
Close follow-up gaps found while validating the local clone, IntSet, and MiniModel exception-safety invariants. In particular, recover advisor-copy state on failure, keep IntSet fault accounting consistent when allocation throws, and make MiniModel ownership cleanup robust under injected heap failures. Reference: #211
Add release-note entries and file-header attribution for the clone, IntSet, MiniModel, fault-injection, and sanitizer-stability changes. PR 211 is kept as release-note issue metadata and as a reference for original patch authorship where that context matters. Reference: #211
Various exception safety and memory management related fixes