Due to the fact that the object is blessed before MooX::StrictConstructor is run on it, a DEMOLISH/DESTROY method is run if an invalid attribute is passed. For some reason if this is called, on some versions of perl (v5.20.2 debian jessie standard, but not 5.22.1) when you try to access $self->attribute it infinate loops and uses all memory. Is it possible to hook _check_required() rather than _assign_new(), as this is called before the empty object has been created?