From 91cc63d68ff02fdd13aa5015af28ab62ec3fdc25 Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:18:25 -0500 Subject: [PATCH] messaged --- system/logmessaged.py | 2 +- system/tests/test_logmessaged.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/system/logmessaged.py b/system/logmessaged.py index c095c261..05425c12 100755 --- a/system/logmessaged.py +++ b/system/logmessaged.py @@ -25,7 +25,7 @@ def main() -> NoReturn: while True: dat = b''.join(sock.recv_multipart()) level = dat[0] - record = dat[1:].decode("utf-8") + record = dat[1:].decode("utf-8", errors="backslashreplace") if level >= log_level: log_handler.emit(record) diff --git a/system/tests/test_logmessaged.py b/system/tests/test_logmessaged.py index 9ccc8ef5..8e463af7 100644 --- a/system/tests/test_logmessaged.py +++ b/system/tests/test_logmessaged.py @@ -3,6 +3,7 @@ import os import time import cereal.messaging as messaging +import zmq from openpilot.system.manager.process_config import managed_processes from openpilot.system.hardware.hw import Paths from openpilot.common.swaglog import cloudlog, ipchandler @@ -53,3 +54,19 @@ class TestLogmessaged: logsize = sum([os.path.getsize(f) for f in self._get_log_files()]) assert (n*len(msg)) < logsize < (n*(len(msg)+1024)) + def test_invalid_utf8_log(self): + ctx = zmq.Context() + sock = ctx.socket(zmq.PUSH) + sock.connect(Paths.swaglog_ipc()) + + try: + sock.send(b"\n" + b'{"msg":"\xff"}') + cloudlog.error("after invalid utf8 log") + time.sleep(0.5) + + msgs = [m.logMessage for m in messaging.drain_sock(self.sock)] + assert any('"\\xff"' in m for m in msgs) + assert any("after invalid utf8 log" in m for m in msgs) + finally: + sock.close() + ctx.term()