To replicate the bug, whirlwind and die... make sure you are still whirlwinding when you die.
I think that the event is trying to run while you aren't playing... so the fix is:
[in event_whirlwind, act.offensive.c]
/* For the sake of simplicity, we will place the event data in easily
* referenced pointers */
pMudEvent = (struct mud_event_data *) event_obj;
ch = (struct char_data *) pMudEvent->pStruct;
if (!IS_PLAYING(ch->desc)) <
you'll need this
return 0; <
and this