Skip to content
15 changes: 14 additions & 1 deletion portable/ThirdParty/GCC/Posix/port.c
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ void vPortStartFirstTask( void )
*/
BaseType_t xPortStartScheduler( void )
{
int iSignal;
int iSignal = 0;
sigset_t xSignals;

hMainThread = pthread_self();
Expand All @@ -287,6 +287,19 @@ BaseType_t xPortStartScheduler( void )
while( xSchedulerEnd != pdTRUE )
{
sigwait( &xSignals, &iSignal );

#if __APPLE__
/* For some reason, on macOS when running in LLDB, sigwait() doesn't
* always clear the signal the first time. Clear it again if it's still
* pending.
*/
sigset_t set;
sigpending( &set );
if( sigismember( &set, SIG_RESUME ) )
{
sigwait( &xSignals, &iSignal );
}
#endif /* __APPLE__ */
}

/*
Expand Down