Closed Bug 581016 Opened 14 years ago Closed 6 years ago

Resolve finalization when constructor chain throws

Categories

(Tamarin Graveyard :: Garbage Collection (mmGC), defect, P3)

defect

Tracking

(Not tracked)

RESOLVED WONTFIX
Q1 12 - Brannan

People

(Reporter: pnkfelix, Unassigned)

References

Details

Bug 573737 worked on resolving a crash that occurred because the collector's finalization process was attempting to invoke a (virtual) destructor of an object that had a NULL vtable.

Evaluations of two distinct strategies for fixing that bug uncovered another potential problem: if an exception is thrown from the middle of a construction chain, what should we do about the intermediate vtable that the resulting object has?  (See discussion in bug 573737, comment 33.)

Maybe this is actually a feature, not a bug, if the semantics are well-defined.  But we should investigate what guarantees the C++ standard provides, as well as what real-world behavior we can expect, and finally evaluate what we should do to avoid this problem.  E.g. straw proposal: stop using constructors for non-trival activity, and instead require code to invoke separate init() methods (I'm not advocating anything at the moment, it was just something Lars and I tossed around at the beginning of July.).
Blocks: 516156, 604333
Target Milestone: --- → Future
No longer blocks: 516156
Priority: -- → P3
Target Milestone: Future → Q1 12 - Brannan
Tamarin isn't maintained anymore. WONTFIX remaining bugs.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.