It has been '0' days since I have been made extremely angry by Django and its sometimes terrible documentation that is apparently written for either deep Django experts or total novices. I am just a person with a Django application who would like to know why the Ubuntu 24.04 mod_wsgi causes it to render empty 'form.non_field_errors' and 'field.errors' as '[]' instead of nothing. Because of Python and Django bullshit, presumably, but I need to fix it.
Our Ubuntu 24.04/mod_wsgi mystery keeps being deeper: it's been pointed out that list doesn't normally have a __str__ method; normally it comes from 'object'. So our real problem is that the list builtin in mod_wsgi executed Python has acquired a __str__ special method (!!).
And yes it is specifically the Ubuntu 24.04 version of mod_wsgi; both 20.04 and 22.04 mod_wsgi work fine. Conveniently I have a very simple reproduction case, inconveniently Ubuntu bug reports famously do nothing.
Perhaps this machine will become an Ubuntu 22.04 machine instead of the planned 24.04 update.
It turns out that my mystery is not a Django problem, it is a 'mod_wsgi on Ubuntu 24.04' problem, where things running under mod_wsgi silently wind up with an incorrect method resolution order. How do you even do that, especially when __mro__ is not affected?
(Is mod_wsgi playing around with the insides of the Python interpreter?)
(You can apparently get this during interpreter shutdown if you have __del__ methods. It's fun times if you're already debugging some other Python problem.)
Dear everyone writing release notes for software: if you have a specific term for something, please do not decide to sometimes hyphenate it ('sub-interpreter') and sometimes not ('subinterpreter'). People searching your release notes for notes on things will not appreciate your cleverness.
As chased down by @ewenmcneill this is a Python 3.12 bug that is fixed in 3.12.5[1], in "gh-117482: Unexpected slot wrappers are no longer created for builtin static types in subinterpreters"[2] per the changelog[3]. Will Ubuntu backport a fix or update 24.04 to a newer 3.12.x? Who knows.
(The issue applies to multiple builtin types, not just 'list'.)
It appears that Canonical has done something unusual to Python sub-interpreters in the Ubuntu 24.04 version of Python, such that if you create one in your code (as mod_wsgi normally does), list.__str__ gets set there where it normally doesn't exist. Interested parties can try out this test program:
One thing I’m definitely noticing when riding the subway this winter is that the amount of ads is way down, with lots of empty space. And what’s left isn’t necessarily top brands, to put it one way. It’s kind of nice but I hope it’s not another bad hit to the TTC’s budget.
In an ideal world, public transit wouldn’t be partly ad funded, but here we are.
To do wildcard expansion, the shell in V1 through V6 ran '/etc/glob <command> <arg1> <arg2> <...>' if any of those arguments had wildcards; glob expanded wildcards and exec'd the command with the result. To quote characters (including wildcards), the V4 to V6 shell set the 8th bit on them during parsing, then stripped the 8th bit before exec(). Except when it exec'd /etc/glob, because /etc/glob needed to get quoted wildcards. So /etc/glob also stripped the 8th bit before it exec()'d things.
This is my face when I work out how the Research Unix V4 through V6 shell and /etc/glob handled quoting. It is a completely expected yet terrifying hack. (V3 is different and more limited.)
This is my expression when the FreeBSD tcpdump can't match only received packets (or only transmitted ones). Oh well, you go to troubleshooting with the tcpdump that you have, not the one you want.
@SwiftOnSecurity Once upon a time, we had a subdomain .rw.<thing>.utoronto.ca, and we had software that used short names like '*.rw' for authorization, and we didn't notice that .rw had become a ccTLD.
And that is why people from Rwanda could read Usenet from our news server for a while.
('RW' was and is the abbreviation of a building name at the university.)
I've now done my first bike ride of 2025, which was a grocery run like my last ride of 2024 (the same ride to the same place, I go regularly). It was also my first bike ride of the year in sandals, because it was only -1C and sunny so why not.
@syncros@gnomon I think my section of the university was all quiet for Y2K but we were running straightforward Unix stuff at the time. I'm sure the big central systems had a lot of work.
I hope to be retired by 2038 but I'll probably still be using Unix systems (eg, a desktop), so I'll get to have fun times anyway. Plus all the online stuff falling over. At least TLS certificates don't have Y2038 issues (... they have other ones, timestamps in them are fun times).
@gnomon It's less good planning and more that working for the university my entire career has some benefits (literally, although I have to cross my fingers about the university pension plan not imploding). Also, while the university no longer shoves you out the door, they do start giving you the side eye after a certain point.
(And after that point, well, I'm not optimistic about the tech industry changing its views about old(er) people. Maybe Y2038 will change that, like Y2K for mainframers.)
@gnomon@nev Well, I don't have names for the CRLF thing, but allegedly the reason that IMAP specifies UTF-7 instead of UTF-8 is that Mark Crispin was still running a TOPS-20 machine (which doesn't have 8-bit bytes).
As someone who sits in my own little X desktop world of a peculiar fvwm based configuration (with various pains ensuing from this), I applaud doing the kind of 'go your own minimalist way' that is the thread at https://mastodon.social/@mhoye/113722479490964091
(Having used Unix through serial terminals or modems+emulators thereof back in the days, I am not personally interested in going back to a single text console/window experience, but it is certainly an option for simplicity.)
Rolling my own graphical desktop experience on a laptop was sufficiently much work that I wound up giving up and using a customized Cinnamon setup (as the most attractive and least offensive option). But a text mode or simple graphical mode laptop usage is certainly possible.
(You will probably get quite familiar with at least nmcli/nmtui as you keep roaming around networks, setting up VPNs, and so on.)
@rk I voted 'amd64' because it must constantly irritate Intel to see it (and it's historically accurate). I'll live with accidentally downloading aarch64 tarballs by mistake every once in a while because the names are so similar to each other.