fix an annoying abstraction violation in uth

this also wasn't using locking correctly: it never released the locks