I think rx.disposeBag is doing some wrong memory stuff. Take a look at this post. I'm investigating now but might be helpful if you take a look as well.
ReactiveX/RxSwift#1439
Check kzaher comment:
Usually what happens is that somebody is using objc_getAssociatedObject and objc_setAssociatedObject inside rx extension in this form objc_getAssociatedObject(self, ... vs the correct objc_getAssociatedObject(base, ....
Because Swift has struct reusing, those two facts combined usually results in that kind of behavior.
I think
rx.disposeBagis doing some wrong memory stuff. Take a look at this post. I'm investigating now but might be helpful if you take a look as well.ReactiveX/RxSwift#1439
Check kzaher comment: