It’s genuinely great to have a Bitmessage client like notbit — no Python, no GUI, just a small C daemon you run from a terminal. Most Bitmessage clients drag in a whole GUI toolkit and a Python runtime; notbit needs none of that.

It did have an ugly bug though: it would lock up at 100% CPU after running a while, with nothing in the logs pointing at why. It only happened once or a few times a day, which made it miserable to chase. The cause turned out to be in check_timer_sources(): a timer source gets removed and reinserted in the same list pass, and the two operations corrupt the linked list into a small self-referencing loop — the next pass through it spins forever.

Good to see it’s fixed now.