I think we’re referring to two separate problems. This sounds like a description of resurrection, which can happen even if all atomic accesses are well-ordered. I’m asking about decoherence, where two threads disagree on the temporal ordering of changes to a memory location despite exclusively accessing that location through atomic operations.
I can see where you’re coming from, but if the program correctly orders all of its own atomic memory accesses and still manages to corrupt an object’s refcount because a runtime it has no insight into chose to use a relaxed memory ordering, isn’t that the runtime’s fault?