Thanks to visit codestin.com
Credit goes to github.com

Skip to content

pendsv_schedule_dispatch can silently do nothing #18365

@peterharperuk

Description

@peterharperuk

Port, board and/or hardware

rp2

MicroPython version

On the rp2 port with MICROPY_PY_THREAD set, PendSV_Handler acquires pendsv_mutex then calls the dispatch handlers. If an interrupt goes off while inside PendSV_Handler which ends up calling pendsv_schedule_dispatch, nothing happens because pendsv_suspend_count is not zero and the "work" kicked off by the interrupt is never done.

I'm a bit surprised this isn't impacting cyw43. Are we relying on LwIP ticks to service cyw43?

Reproduction

I don't have an easy to reproduce method at the moment although I've seen this cause a real issue.

Expected behaviour

A call to pendsv_schedule_dispatch must end up calling the dispatch function.

Observed behaviour

I see a call made to pendsv_schedule_dispatch but the dispatch function is not called.

Additional Information

No, I've provided everything above.

Code of Conduct

Yes, I agree

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions