Bitwarden Shipped My Fix
Back in August I wrote about my self hosted Bitwarden server falling over during a routine update. If you missed it, that post is here.
Quick recap: the update died about halfway through, after it had stopped all my containers but before it had touched any of my data. The stack trace pointed into Bitwarden’s own source rather than anything I had misconfigured. Their setup helper was writing to a single StringBuilder from two threads at once, one handling normal output and one handling errors. Most of the time those two don’t collide. On that particular version they collided nearly every run, which is why the update failed so reliably for me and worked fine for plenty of other people. The fix was a lock around both handlers, about four lines, and it was merged into main six days later.
![GitHub pull request bitwarden/server #8141, titled [PM-41468] Fix thread-unsafe StringBuilder in Setup Helpers.Exec, showing a purple Merged badge and one commit merged into bitwarden:main](/images/bitwarden/pr-merged.webp)
That fix has now actually shipped. Bitwarden Server v2026.8.1 went out on 2 September and my change is in it. They also pulled it out into the Community Highlight section of the release notes:
![Bitwarden Server v2026.8.1 release notes on GitHub, showing a Community Highlight section containing a single entry: [PM-41468] Fix thread-unsafe StringBuilder in Setup Helpers.Exec by @cttech-io in #8141](/images/bitwarden/community-highlight.webp)
I really wasn’t expecting that part! Getting a pull request merged is good enough on its own, and the review process does most of the work of telling you whether you actually got it right. Having someone at Bitwarden read it afterwards and decide it was worth pointing at in the release notes is a different thing entirely.
It means a fair bit to me for a couple of reasons. I have been self hosting Bitwarden since 2023 and it holds every password I have, so knowing there are now a few lines of my code sat inside it is a good feeling. And anyone else self hosting who would have run into that same crash simply won’t now.
Four lines of code and one evening. Not huge in the grand scheme of things, but it is the first time I have had something land in a project of that size and I am going to enjoy it.
If you want the full story of how the bug was tracked down, including the small detail that gave the whole thing away, the original post is here.