Strange MQTT exceptions - possible memory corruption?
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 28/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- embedded-iot, networking
Línea de trabajo
Start by reproducing the reported exception with the provided MQTT receive loop on CircuitPython 10.1.3 or 10.1.4, then trace how adafruit_minimqtt handles PUBLISH packet lengths. No test or source file is named in the issue. Done means the reported packet no longer causes the exception or subsequent instability, with the behavior covered by a reproducible test.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
CircuitPython version and board name
Adafruit CircuitPython 10.1.3 on 2026-02-21; Wemos Lolin C3 Mini with ESP32-C3FH4
Code/REPL
import asyncio
import wifi
import socketpool
import ssl
import adafruit_minimqtt.adafruit_minimqtt as MQTT
import usyslog
BROKER = "192.168.0.1"
MQTT_PORT = 1883
MQTT_TOPICS = [
"inverter/total/P_AC",
"battery/1/relay/set",
"battery/2/relay/set",
]
sl = usyslog.UDPClient(socketpool.SocketPool(wifi.radio), ip='192.168.0.1', tag='battery')
def log(msg):
try:
sl.info(msg)
except Exception:
print(msg)
def handle_message(client, topic, message):
if topic == "inverter/total/P_AC":
power_ac = float(message)
log(f"AC power: {power_ac} W")
elif topic == "battery/1/relay/set":
if message == "ON":
log("Relay 1: turning ON")
else:
log("Relay 1: turning OFF")
elif topic == "battery/2/relay/set":
if message == "ON":
log("Relay 2: turning ON")
else:
log("Relay 2: turning OFF")
async def mqtt_receive_task():
pool = socketpool.SocketPool(wifi.radio)
ssl_ctx = ssl.create_default_context()
client = MQTT.MQTT(
broker=BROKER,
port=MQTT_PORT,
socket_pool=pool,
ssl_context=ssl_ctx,
)
client.on_message = handle_message
client.connect()
client.subscribe([(topic, 0) for topic in MQTT_TOPICS])
log("MQTT connected and subscribed.")
while True:
try:
client.loop(timeout=1)
except Exception as e:
log(f"MQTT error: {e} – reconnecting…")
try:
client.reconnect()
except Exception as re:
log(f"Reconnect failed: {re}")
await asyncio.sleep(9)
async def main():
await mqtt_receive_task()
asyncio.run(main())
Behavior
After some time, 12 to 24 hours:
MQTT error: MMQTTException('Topic length 11830 in PUBLISH packet exceeds remaining length 48 - 2', None);
Description
After this exception the program becomes more and more unstable and just crashes without any error message.
I suspect a memory corruption since I use the mosquitto MQTT server with other project, without any problems, but where?
Tested with Circuitpython 10.1.3 and 10.1.4.
Two different boards tested.
Additional information
No response
- Lenguaje dominante
- C
- Estrellas
- 4.6k
- Forks
- 1.4k
- Merge medio
- 1 d 8 h
- PR fusionados (30 d)
- 155
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de adafruit/circuitpython
-
board breaks api
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
adafruit/circuitpython#11099 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
storage usb zephyr
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
adafruit/circuitpython#11531 ·
Los mantenedores suelen responder en 1 día
-
Move silabs to ZephyrAbiertosilabs
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
adafruit/circuitpython#11507 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Feature/API request: portable camera capture across ESP-IDF, Zephyr, and parallel interfacesPosiblemente ocupada @tannewt la tomó hace 1 día. Abiertocircuitpython api displayio enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
adafruit/circuitpython#11505 · 5 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
adafruit/circuitpython#11472 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de adafruit/circuitpython
Issues similares
-
Bad device URI "://" on network printers. Printing stopped working between 2.4.19 and 2.4.20Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
OpenPrinting/cups#1751 ·
Los mantenedores suelen responder en 1 día
-
Warps 4 unit tests (raalloc)Abiertoenhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Policy query leaks host primary block (BSL_PrimaryBlock_deinit skipped) on two early-exit pathsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
NASA-AMMOS/BSL#355 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
arancormonk/dsd-neo#660 ·
Los mantenedores suelen responder en 1 día