After my possession of my pawn, it's un-possessed by itself

Maybe your DefaultPawn (defined in GameMode) is being spawned and calls possess on itself. Set default pawn to None to fix

Hello, I’m writing a snake game.

In my Game Mode blueprint, I spawn a Pawn (a snake head) and possess it with my Controller.

In my Controller blueprint, I monitor On Possess and On UnPossess events.

After running, I see 3 messages:

Possessed BP_SnakeHead
Possessed DefaultPawn

So what is happening? Why did my Controller unpossess my Pawn and possess another thing?

Thanks, now the DefaultPawn has gone. But there’s another problem: the spawned pawn BP_SnakeHead is killed instantly. In BP_SnakeHead I monitor event Destroyed and see this happening.

Hmm. Check Initial Life Span on snake actor.
Also in your SpawnActor node change Collision Handling to Always spawn, perhaps some object is in your way.