Thanks, John, for your detailed report. On Mon, Jul 13, 2026 at 8:09 AM 'John Kline' via weewx-user < [email protected]> wrote:
> If you run WeeWX on Debian 13 (trixie) and your system installed the > python3.13 update from the 13.6 point release (version 3.13.5-2+deb13u3, > rolling out via unattended-upgrades since July 11), be aware that it can > crash weewxd with a segmentation fault. > > What it looks like > ------------------ > weewxd dies with SIGSEGV -- no Python traceback in the log, the process > just exits. systemd shows "Main process exited, code=dumped, > status=11/SEGV". If you look closely at the timing, the crash comes > milliseconds after WeeWX's periodic garbage collection pass (the > "Garbage collected N objects" INFO line, every 3 hours by default). > weewxd is unusually good at tripping this bug precisely because it calls > gc.collect() on that schedule while its other threads keep working. > > I run seven WeeWX machines (Raspberry Pi 5, all on trixie). Four crashes > in the ~48 hours after the update reached them; the crash takes down maybe > 1 in 25 GC passes, so it looks random and can hit anywhere from hours to > days after a restart. The crashing thread differs every time (sqlite > reads, report generation, image generation), so don't chase whatever > happens to be in your traceback if you have faulthandler enabled -- it's > the victim, not the cause. > > The cause > --------- > It is not WeeWX and not any extension. Debian's deb13u3 update backported > a garbage-collector fix into Python 3.13.5 but omitted a second upstream > commit that the fix depends on, so a GC pass can free memory that is still > in use. It's tracked as Debian bug #1141977, the missing commit has been > identified by bisection, and the maintainer is engaged, so I'd expect a > fixed package (deb13u4) reasonably soon: > > https://bugs.debian.org/1141977 > > Am I affected? > -------------- > dpkg -l python3.13 | grep deb13u3 > > Two things must both be true: the deb13u3 package is installed AND weewxd > was (re)started after it was installed. A weewxd that has been running > since before the upgrade still uses the old library and is safe until its > next restart. > > What to do > ---------- > 1. If your weewxd predates the upgrade, simply don't restart it until the > fixed package arrives. > 2. Otherwise, make crashes self-healing while you wait. A systemd > drop-in (systemctl edit weewx) with: > > [Service] > Restart=on-failure > RestartSec=10 > > turns each crash into ~15 seconds of downtime. I also recommend > Environment=PYTHONFAULTHANDLER=1 there -- it logs a full thread dump > on any future native crash, which is invaluable for problems like > this one. > 3. Raising gc_interval in weewx.conf reduces exposure but does not > eliminate it (Python's automatic collections use the same broken > code path), so I wouldn't rely on it. > 4. When the fixed python3.13 package arrives, remember that a running > weewxd keeps the old library until it is restarted -- do a > "systemctl restart weewx" after the upgrade to actually get off the > broken version. > > Downgrading to deb13u2 also works but re-opens the security fixes that > update carried; with the auto-restart in place I don't think it's worth > it. > > John > > -- > You received this message because you are subscribed to the Google Groups > "weewx-user" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/d/msgid/weewx-user/92B83A5B-A968-4531-8DF2-223C1E9D1ED7%40johnkline.com > <https://groups.google.com/d/msgid/weewx-user/92B83A5B-A968-4531-8DF2-223C1E9D1ED7%40johnkline.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "weewx-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/weewx-user/CAPq0zEBgF31yeiNrfFaNAX1RrZkQRG-dVvz%3DM6qhpRXXDYwxXA%40mail.gmail.com.
