The DestoryBody() method doesn't always work, especially in a listener.
It seems to be associated with the IsLocked Method.
It always bring us some troubles. We must find another way to destory bodies with an expense of speed .
Can you change some stuff in it to help us? For Example, put the bodies which will be destoryed into a list, than destory all of them after the b2World.Step() method.