Suspending Tasks before they are finished

Jerzy J yuralogplus at gmail.com
Mon Mar 14 11:44:14 UTC 2022


Hi,

I've been developing some tests and observed some task behaviour that i
can't understand and couldn't find any documentation about it.

I have tests where I create 2 extra tasks (Workers) and then those tasks
are blocked and unlocked using semaphores and barriers. However, whenever
main task (Runner) is about to get blocked, the test crashes (just finishes
instantly). In some configurations is seems to "deadlock" on a semaphore
instead, while it should be able to move forward.

I realised that if I suspend the Worker tasks before they are about to
finish, with for e.g:
`rtems_event_receive( RTEMS_ALL_EVENTS, RTEMS_DEFAULT_OPTIONS, 0, &events
);`
line at the very end of worker execution, it all works as expected.

Do you maybe know what is the reason for such behaviour? I'm also not sure
in which state is the task after it finishes it's execution but before it
is deleted, is it 'blocked' or is it 'dormant'?

Thanks and all the best,
Jerzy


More information about the users mailing list