throw an exception when the message ring buffer is full, in order to avoid a dead lock when handling messages from the same thread as the message loop