If an application deletes chare arrays with ckDestroy(), then writes a checkpoint with CkStartCheckpoint(), the application restarted from the checkpoint will have _numGroups smaller than the last ready entry in _groupTable. In the restarted application, such entries will be overwritten with subsequent ckNew()s. One possible outcome is a hang when a message sent to a new group arrives before the group is created and gets delivered to the group object that will be overwritten at group creation.
I believe this is the underlying issue causing issue #3678