diff -r 4ece3d8d22fa -r 83c0785c1984 src/sim/eventq.cc --- a/src/sim/eventq.cc Sun Sep 30 13:20:53 2012 -0500 +++ b/src/sim/eventq.cc Mon Oct 01 17:10:03 2012 -0500 @@ -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 4ece3d8d22fa -r 83c0785c1984 src/sim/sim_events.cc --- a/src/sim/sim_events.cc Sun Sep 30 13:20:53 2012 -0500 +++ b/src/sim/sim_events.cc Mon Oct 01 17:10:03 2012 -0500 @@ -56,7 +56,7 @@ // queue. if (!isFlagSet(IsMainQueue)) { exitSimLoop(cause, code); - delete this; + setFlags(AutoDelete); } // otherwise do nothing... the IsExitEvent flag takes care of