At the moment, SOMStack does not overwrite Vals when they are popped/truncated (instead it simply adjusts the list's length), so rboehm probably ends up keeping alive otherwise-dead objects in some cases. We could overwrite values with Val::illegal but the nicest way of doing things would be to define a custom trace function for SOMStack. CC/@jacob-hughes
[I also wonder if Vecs have the same issue?]