Should atexit really store a weak reference?