diff -r 950de34f1bbd -r a119910afe76 src/sim/eventq.cc --- a/src/sim/eventq.cc Wed Oct 24 17:21:51 2012 -0400 +++ b/src/sim/eventq.cc Wed Oct 24 17:22:01 2012 -0400 @@ -203,7 +203,8 @@ if (!event->squashed()) { event->process(); if (event->isExitEvent()) { - assert(!event->flags.isSet(Event::AutoDelete)); // would be silly + assert(!event->flags.isSet(Event::AutoDelete) || + !event->flags.isSet(Event::IsMainQueue)); // would be silly return event; } } else { diff -r 950de34f1bbd -r a119910afe76 src/sim/sim_events.cc --- a/src/sim/sim_events.cc Wed Oct 24 17:21:51 2012 -0400 +++ b/src/sim/sim_events.cc Wed Oct 24 17:22:01 2012 -0400 @@ -56,7 +56,7 @@ // queue. if (!isFlagSet(IsMainQueue)) { exitSimLoop(cause, code); - delete this; + setFlags(AutoDelete); } // otherwise do nothing... the IsExitEvent flag takes care of