Yeah, we are out of date and I will attempt to upgrade soon. But, I do think there's a threading issue here that's very intermittent. I did read other posts that describe problems if you don't call Reset on the persistent object. See any problems here?
typedef std::pair<DataDeleterP*, utils::PersistentP<v8::Object> > PeristentWeakDataPair;
typedef v8::WeakCallbackInfo<PeristentWeakDataPair> PersistentWeakData;
static
utils::PersistentP<v8::Object> makePersistent(v8::Isolate *isolate, v8::Handle<v8::Object> object, DataDeleterP* dataDeleterPP, PersistentWeakData::Callback callback) {
utils::PersistentP<v8::Object> persistentObjP(new PERSISTENT_BASE(v8::Object)(isolate, object));
persistentObjP->SetWeak(new PeristentWeakDataPair(dataDeleterPP, persistentObjP), callback, v8::WeakCallbackType::kParameter);
return persistentObjP;
}
static
void releasePersistent (const PersistentWeakData& data)
{
PeristentWeakDataPair* paramPairP = data.GetParameter();
delete paramPairP->first;
paramPairP->second->Reset();
paramPairP->second.reset();
delete paramPairP;
#ifdef ADOBE_V8_DEBUG_V8_ALLOCATIONS
DecrementV8AllocCount();
#endif