Skip to content
Snippets Groups Projects

Perform serial prints in a critical section

Merged rahix requested to merge rahix/fix-serial into master
  1. Aug 24, 2019
    • rahix's avatar
      fix(serial): Perform serial prints in a critical section · 32681478
      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: default avatarRahix <rahix@rahix.de>
      Verified
      32681478
Loading