fatal() always exits