need locking around use of weak_ptr_list in mkWeak#