From c524f21396457c55435f852bcf0bb4befb91ddba Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 7 Sep 2018 15:42:51 -0700 Subject: systemc: Catch exceptions during updates, notifications, and callbacks. Change-Id: I6005c12ce32d24413618e3955625432985f99f69 Reviewed-on: https://gem5-review.googlesource.com/c/12607 Reviewed-by: Gabe Black Maintainer: Gabe Black --- src/systemc/core/scheduler.hh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/systemc/core/scheduler.hh') diff --git a/src/systemc/core/scheduler.hh b/src/systemc/core/scheduler.hh index 7b6238843..052be08c3 100644 --- a/src/systemc/core/scheduler.hh +++ b/src/systemc/core/scheduler.hh @@ -457,8 +457,16 @@ Scheduler::TimeSlot::process() { scheduler.status(StatusTiming); - while (!events.empty()) - events.front()->run(); + try { + while (!events.empty()) + events.front()->run(); + } catch (...) { + if (events.empty()) + scheduler.completeTimeSlot(this); + else + scheduler.schedule(this); + scheduler.throwToScMain(); + } scheduler.status(StatusOther); scheduler.completeTimeSlot(this); -- cgit v1.2.3