__tx_char() in uart_buffering.c doesn't have any locking, so different tasks printing to the console at the same time can result in messages being lost.
For example, the pd_task printing "[0.094419 p0: PPC init'd.]" while console_task is printing "Console is enabled; type HELP for help." can produce:
"Console is enabled; type HELP for hel[."
The whole message from the higher priority task is lost, which is sad.
Sometimes the whole TX buffer gets printed again. I spent some time looking for what caused this second reboot before I realized it wasn't real:
"""
--- UART initialized after reboot ---
[Reset cause: reset-pin]
[Image: RO, grunt_v1.1.8319-1356a1a5b 2018-05-10 02:27:11 @cros-beefy475-c2]
[0.004176 init buttons]
[0.004399 Inits done]
[0.039184 SW 0x03]
[0.040385 hash start 0x00040000 0x00020dd4]
[0.043375 PB init-on]
[0.043808 PD comm enabled]
[0.049110 KB init state: [0.049492 TCPC p1 init ready]
[0.049793 TCPC p1 VID:0x1da0 PID:0x8751 DID:0x1 FWV:0x37]
08 0a 08 08 08 -- 08 --C1 st2
08 08 -- 08 [0.064022 p1: PPC init'd.]
0
--- UART initialized after reboot ---
[Reset cause: reset-pin]
[Image: RO, grunt_v1.1.8319-1356a1a5b 2018-05-10 02:27:11 @cros-beefy475-c2]
[0.004176 init buttons]
[0.004399 Inits done]
[0.039184 SW 0x03]
[0.040385 hash start 0x00040000 0x00020dd4]
[0.043375 PB init-on]
[0.043808 PD comm enabled]
[0.049110 KB init state: [0.049492 TCPC p1 init ready]
[0.049793 TCPC p1 VID:0x1da0 PID:0x8751 DID:0x1 FWV:0x37]
08 0a 08 08 08 -- 08 --C1 st2
08 08 -- 08 [8]
[0.072954 TCPC p0 init ready]
"""
Comment 1 by ecgh@google.com
, Jun 7 2018