Issue created by Sebastian Huber: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5756



`_TOD_Set()` expires every realtime watchdog which the new time of day
reaches. It runs in the task which calls `rtems_clock_set()` or
`clock_settime()`. The only lock which that task holds is an API mutex,
so the task stays preemptible.

`_Watchdog_Do_tickle()` calls a service routine outside the lock of the
collection and with interrupts enabled. The service routine of a task
based timer sends an event to the timer server, and the send ends with a
thread dispatch. A timer server of a higher priority therefore runs
while the tickle phase is still in progress.

A task which runs in that window may delete an object which the service
routine of another watchdog of the same phase still reads. One processor
is enough for this order.

A service routine of the clock tick reaches no such window. It runs in
an interrupt, and a delete directive obtains the object allocator mutex,
which no interrupt handler may do.

Found in the review of the delete of a period. This description was
created with Claude Code assistance.

-- 
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5756
You're receiving this email because of your account on gitlab.rtems.org. 
Unsubscribe from this thread: 
https://gitlab.rtems.org/-/sent_notifications/5-8uc548jwo6vgnhc207v8htbpp-1d/unsubscribe
 | Manage all notifications: https://gitlab.rtems.org/-/profile/notifications | 
Help: https://gitlab.rtems.org/help


_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to