fix gc bug, may be correct