diff --git a/testsuites/validation/tc-task-restart.c b/testsuites/validation/tc-task-restart.c index 3a06ae6d99..69de846871 100644 --- a/testsuites/validation/tc-task-restart.c +++ b/testsuites/validation/tc-task-restart.c @@ -779,7 +779,12 @@ static void Signal( rtems_signal_set signals ) SetFatalHandler( ResumeThreadDispatch, ctx ); cpu_self = _Thread_Dispatch_disable(); - if ( setjmp( ctx->thread_dispatch_context ) == 0 ) { + int jumped = setjmp( ctx->thread_dispatch_context ); + + /* cpu_self can be clobbered by setjmp/longjmp, so reload it */ + cpu_self = _Per_CPU_Get(); + + if ( jumped == 0 ) { Block( ctx ); } else { _Thread_Dispatch_unnest( cpu_self );