New issue
Advanced search Search tips

Issue 845277 link

Starred by 2 users

Issue metadata

Status: WontFix
Owner:
Closed: Jun 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

ec: console TX buffer corrupted by task switching

Project Member Reported by ecgh@chromium.org, May 21 2018

Issue description

__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

Status: WontFix (was: Started)
Console output is not intended to be reliable. Missing and duplicate messages should be expected. Tasks are allowed to print on top of each other without locking since the timing of the rest of the system is more important.

Sign in to add a comment