don't access obj members outside of the lock
make arc_remove() more atomic