Ah, I have an idea. We use create_dirty in different places for Time, so that means you get raw memory that is not guaranteed to be zeroed. You'd have to manually set zone to nil then after allocating the object for those case, also see here:

https://github.com/rubinius/rubinius/blob/master/vm/builtin/time.cpp#L20-L43

As you can see here, the array and other fields are also set explicitly to nil.