Closed Bug 656907 Opened 13 years ago Closed 6 years ago

GCAlloc, GCLargeAlloc, and the reaper all differ about how to delete objects

Categories

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

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX
Future

People

(Reporter: lhansen, Unassigned)

Details

In GCAlloc, we test whether the first word is zero (this came in with bug #573737 and may actually be redundant now, I'm investigating), then we clear kFinalizable, then we run the destructor.  The clearing of the bit before the destructor call is supposed to make the GC more resilient; if the destructor throws, then the clearing is important (according to a comment).  IMO, if the destructor throws while we're in a GC critical section then we're already long past gone, but perhaps this has some relevance to OOM handling?

In GCLargeAlloc, we just run the finalizer: no zero check, no bit clearing.  Then the object is freed.

In the reaper, we assert that the first word is not zero, then we run the destructor without clearing the bit.  Then the object is freed.
Assignee: lhansen → nobody
Status: ASSIGNED → NEW
Flags: flashplayer-qrb+
Target Milestone: --- → Future
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.