Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
lib: os: mpsc_pbuf: do not wait when spinlock is held
Check if the spinlock is held before attempting to wait by taking the semaphore, as that would cause a context switch which isn't allowed and will trigger an assertion error when `CONFIG_SPIN_VALIDATE` is enabled. Logging in spinlock-held context when the log buffer is full can lead to an infinite assertion error loop, as the logging subsys attempts to allocate buffer when there's none available, it will try to wait for one and thus triggers the assertion error, the error message will be printed through the logging sybsys but there's no buffer available, so it will try to wait for one and triggers another assertion error.. This loop just goes on and on forever, and nothing gets printed to the terminal. Added a test to validate the fix. Signed-off-by: Yong Cong Sin <[email protected]> Signed-off-by: Yong Cong Sin <[email protected]> Signed-off-by: Maxim Adelman <[email protected]> (cherry picked from commit 1a578eb)
- Loading branch information