use a weakpointer
the crash over containment doesn't seem reproducible, but use an extra check on it CCBUG:288972