-
rahix authored
Sometimes during initialization, one `log_msg()` intercepts another one, leading to a whole lot of weird issues in other modules (like I2C). I suspect this to be memory corruption of some kind. The issues can be fixed by performing serial prints in a critical section, thus ensuring atomicity of prints. Note that this does not mean log messages will not interleave. The CDC-ACM and BLE-Serial writes cannot be put into a critical section and are thus a point where this code can still fail. For now, however, this fix ensures the race-conditions during startup, where USB and BLE are not yet running, don't happen anymore. Signed-off-by:
Rahix <rahix@rahix.de>
rahix authoredSometimes during initialization, one `log_msg()` intercepts another one, leading to a whole lot of weird issues in other modules (like I2C). I suspect this to be memory corruption of some kind. The issues can be fixed by performing serial prints in a critical section, thus ensuring atomicity of prints. Note that this does not mean log messages will not interleave. The CDC-ACM and BLE-Serial writes cannot be put into a critical section and are thus a point where this code can still fail. For now, however, this fix ensures the race-conditions during startup, where USB and BLE are not yet running, don't happen anymore. Signed-off-by:
Rahix <rahix@rahix.de>