If the player exits a world while an Evoker is in the middle of its attack animation, upon loading the world back up, the Evoker will have become passive. In the attached images, you can see how this happens. The first image was taken before the world was exited; you can see that the Evoker is hostile towards the iron golem. The second image shows what happens after the world is reloaded; the Evoker stares off into space, taking no notice of the golem in front of him. The vex in the image was spawned by the Evoker before the world was exited. The third image shows a closer view of the Evoker as he refuses to attack the golem. The fourth image proves that, even in Survival, he pays no attention to either the player or the golem. Attacking the Evoker will not revert him back to his previous hostile state. In my Survival world, I had trapped two Evokers at the bottom of an iron farm and they would reliably kill the golems. I then logged out and logged back in to find that they no longer would attack either the player or the 10-15 golems sitting at the bottom of the farm. After testing a few scenarios, I learned that Evokers become passive if the player logs out during their attack animation and figured that that must have been what happened. As a result, I now have two Evokers in my world who refuse to do anything.
Still seems to to happen in 1.90.