sndhandle = ent_playloop2(...)

What happens to the sndhandle variable when this instruction happens? Does it store a numerical value? Is this variable a unique identifier of that played sound? Is sndhandle a global or local variable?

Monitor this value and see what it stores normally when its assigned to an ent_playloop, and then see if this value changes right before the crash?

Create a test level with the block being pushed infinitely by the player/ai and see if it crashes after a certain amount of time. Make sure no other entities are in this test level. Run the level over again and see if it crashes consistently past the 15 min mark.

Will it still crash if you used snd_play?, or regular ent_playloop?