I've written a test for Bug #38005, which I'll attach in a moment. It basically refs and unrefs an object 4 million times in 200 threads, and checks that the refcount hits 0 at the right time.
(Perhaps those numbers are a bit enthusiastic, but on my dual-core laptop it takes 4 seconds and peaks at 15 MB resident, and even on a single-core ARM device it only takes 10 seconds.)
Created attachment 49922 [details] [review]
[PATCH 1/2] relay test: don't leak the server's address
Not entirely related, but I noticed this while writing the new test.
Created attachment 49923 [details] [review]
[PATCH 2/2] Add a regression test for fd.o #38005
This uses internal API so it can exercise (for instance) both the ref and ref_unlocked code paths, and also so it can create pending call objects.
Created attachment 49924 [details] [review]
patch 2/2 adapted for dbus-1.4
The code is the same, only the Makefile.am differs.
Review of attachment 49922 [details] [review]:
Well, I was about to complain that 4 seconds seems like a lot, but it's dwarfed by the rest of the test suite. (Which is in itself not a good thing, but silences my vague objection. ☺) ++
Thanks, fixed in 1.4.16, 1.5.8