This seems to be fixed properly. The problem was that some entities triggered chunk processing and forced chunks to unload while the entity ticking phase was still going on. This led to all entities within that chunk to not unload properly, leaving them in memory. Then, when the chunk was reloaded, it caused duplicates.
In 1.14.2 pre1, unloading has been moved to a different queue, meaning this should never happen again. 😃
I can confirm in pure vanilla. This bug has been shown multiple times before.
Beautifully well explained. Seems like a pretty nasty bug indeed.
Problem seems to be that golems are tracked from only 9 blocks away. It should be higher.
There could be many causes for this. Please provide a crash report. 😃
So, a new item got added to the list in 1.9 : chorus fruit. When eaten, it calls Item#onItemUseFinish(ItemStack stack, World worldIn, EntityLivingBase entityLiving). That method then performs a !world.isRemote check and proceeds to call EntityLivingBase#attemptTeleport(double x, double y, double z) a couple of times. In the latter, the code generates PORTAL particles using the client-side spawnParticles method. But because of the server-side check earlier, nothing happens on the client and no packet is sent.
This seems to be caused by the hackfix for MC-149420. Mobs in lazy chunk don't count towards the mobcap anymore. Also related to MC-151144.