Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crashes when exiting Ceon domain #1235

Open
ksuprynowicz opened this issue Nov 14, 2024 · 3 comments
Open

Crashes when exiting Ceon domain #1235

ksuprynowicz opened this issue Nov 14, 2024 · 3 comments

Comments

@ksuprynowicz
Copy link
Member

It's hard to figure out what is causing these, but #1228 doesn't seem to fix it.
I'm testing this currently on local copy and I noticed use after delete assert when leaving the domain:

<unknown> 0x00007fffed2a341c
ScriptSignalV8Proxy::~ScriptSignalV8Proxy ScriptObjectV8Proxy.cpp:1220
ScriptSignalV8Proxy::~ScriptSignalV8Proxy ScriptObjectV8Proxy.cpp:1225
Application::notify Application.cpp:4278
@ksuprynowicz
Copy link
Member Author

QCoreApplicationPrivate::lockThreadPostEventList(QObject*) 0x00007f9cd3ee0331
ScriptObjectV8Proxy::weakHandleCallback(const v8::WeakCallbackInfo<…> &) ScriptObjectV8Proxy.cpp:415
ScriptEngineV8::convertJSObjectToVariant(v8::Local<…>, QVariant &) ScriptEngineV8_cast.cpp:588
ScriptEngineV8::castValueToVariant(const V8ScriptValueTemplate<…> &, QVariant &, int) ScriptEngineV8_cast.cpp:501
ScriptMethodV8Proxy::call(const v8::FunctionCallbackInfo<…> &) ScriptObjectV8Proxy.cpp:1059
ScriptMethodV8Proxy::callback(const v8::FunctionCallbackInfo<…> &) ScriptObjectV8Proxy.cpp:998
ScriptValueV8Wrapper::call(const ScriptValue &, const QList<…> &) ScriptValueV8Wrapper.cpp:102
ScriptValue::call(const ScriptValue &, const QList<…> &) const ScriptValue.h:220
operator() ScriptManager.cpp:2583
ScriptManager::doWithEnvironment(const EntityItemID &, const QUrl &, std::function<…>) ScriptManager.cpp:2575
ScriptManager::callWithEnvironment(const EntityItemID &, const QUrl &, const ScriptValue &, const ScriptValue &, const QList<…> &) ScriptManager.cpp:2585
ScriptManager::timerFired() ScriptManager.cpp:1216
Application::notify(QObject *, QEvent *) Application.cpp:4278
ScriptManager::run() ScriptManager.cpp:1037
operator() ScriptManager.cpp:420

@ksuprynowicz
Copy link
Member Author

It looks like a lot of objects are getting deleted after script engine gets deleted:

[11/14 14:17:34] [DEBUG] [hifi.networking] Returning username "X74hc595" signed with connection UUID "17a49afa-8749-406d-91b0-6b3d0d161092"
[11/14 14:17:34] [DEBUG] [default] ScriptManager::~ScriptManager() : Script manager deleted, type:  ScriptManager::ENTITY_CLIENT  name:  "about:Entities 4"
ScriptManager::~ScriptManager[11/14 14:17:34] [DEBUG] [overte.scriptengine] ScriptMethodV8Proxy destroyed
ScriptMethodV8Proxy destroyed[11/14 14:17:34] [DEBUG] [default] ScriptEngineV8::~ScriptEngineV8: script engine destroyed
[11/14 14:17:34] [DEBUG] [overte.scriptengine.v8] Deleting object proxy:  ""
[Previous message was repeated 9 times]
[11/14 14:17:34] [DEBUG] [overte.scriptengine.v8] Deleting object proxy:  "controlViews"
[11/14 14:17:34] [DEBUG] [overte.scriptengine.v8] Deleting object proxy:  ""
[Previous message was repeated 43 times]
[11/14 14:17:34] [DEBUG] [overte.scriptengine.v8] Deleting object proxy:  "Stats"
[11/14 14:17:34] [DEBUG] [overte.scriptengine.v8] Deleting object proxy:  ""
[Previous message was repeated 6 times]
[11/14 14:17:34] [DEBUG] [default] ScriptSignalV8Proxy::~ScriptSignalV8Proxy()
[11/14 14:17:34] [FATAL] [default] ASSERT: "!_engine->_wasDestroyed" in file /home/ksuprynowicz/overte/overte/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp, line 1222
Signal: SIGABRT (signal SIGABRT)

@ksuprynowicz
Copy link
Member Author

[Inlined] v8::internal::GlobalHandles::NodeBlock<v8::internal::GlobalHandles::Node>::From(v8::internal::GlobalHandles::Node*) 0x00007fe2c36921df
[Inlined] v8::internal::GlobalHandles::NodeSpace<v8::internal::GlobalHandles::Node>::Release(v8::internal::GlobalHandles::Node*) 0x00007fe2c36921df
v8::PersistentBase::Reset() v8-persistent-handle.h:477
ScriptObjectV8Proxy::weakHandleCallback(const v8::WeakCallbackInfo<…> &) ScriptObjectV8Proxy.cpp:414
v8::internal::GlobalHandles::PendingPhantomCallback::Invoke(v8::internal::Isolate*, v8::internal::GlobalHandles::PendingPhantomCallback::InvocationType) 0x00007fe2c3692913
[Inlined] unsigned long v8::internal::GlobalHandles::InvokeFirstPassWeakCallbacks<v8::internal::GlobalHandles::Node>(std::vector<std::pair<v8::internal::GlobalHandles::Node*, v8::internal::GlobalHandles::PendingPhantomCallback>, std::allocator<std::pair<v8::internal::GlobalHandles::Node*, v8::internal::GlobalHandles::PendingPhantomCallback>>>*) 0x00007fe2c3695f77
v8::internal::GlobalHandles::InvokeFirstPassWeakCallbacks() 0x00007fe2c3695f40
v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::internal::GarbageCollectionReason, char const*, v8::GCCallbackFlags) 0x00007fe2c36ff251
v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) 0x00007fe2c36ffe46
v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) 0x00007fe2c36dc81d
v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) 0x00007fe2c36dd954
[Inlined] v8::internal::HeapObject v8::internal::HeapAllocator::AllocateRawWith<(v8::internal::HeapAllocator::AllocationRetryMode)1>(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) 0x00007fe2c36bd4e7
v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) 0x00007fe2c36bd454
[Inlined] v8::internal::FactoryBase<v8::internal::Factory>::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) 0x00007fe2c36b35ac
[Inlined] v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawArray(int, v8::internal::AllocationType) 0x00007fe2c36b359f
[Inlined] v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawFixedArray(int, v8::internal::AllocationType) 0x00007fe2c36b359f
[Inlined] v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArrayWithFiller(v8::internal::Handle<v8::internal::Map>, int, v8::internal::Handle<v8::internal::Oddball>, v8::internal::AllocationType) 0x00007fe2c36b3583
v8::internal::MaybeHandle<v8::internal::OrderedHashSet> v8::internal::OrderedHashTable<v8::internal::OrderedHashSet, 1>::Allocate<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType) 0x00007fe2c39a82c3
v8::internal::MaybeHandle<v8::internal::OrderedHashSet> v8::internal::OrderedHashSet::Allocate<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType) 0x00007fe2c39a8325
v8::internal::KeyAccumulator::AddKey(v8::internal::Handle<v8::internal::Object>, v8::internal::AddKeyConversion) 0x00007fe2c395178f
v8::internal::KeyAccumulator::AddKeys(v8::internal::Handle<v8::internal::FixedArray>, v8::internal::AddKeyConversion) 0x00007fe2c3951934
v8::internal::KeyAccumulator::CollectOwnPropertyNames(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>) 0x00007fe2c3956b0d
v8::internal::KeyAccumulator::CollectOwnKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>) 0x00007fe2c395700e
v8::internal::KeyAccumulator::CollectKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSReceiver>) 0x00007fe2c3957dd9
v8::Object::GetPropertyNames(v8::Local<v8::Context>, v8::KeyCollectionMode, v8::PropertyFilter, v8::IndexFilter, v8::KeyConversionMode) 0x00007fe2c3511daa
ScriptValueV8Wrapper::getPropertyNames() const ScriptValueV8Wrapper.cpp:523
ScriptValue::getPropertyNames() const ScriptValue.h:361
EntityItemProperties::copyFromScriptValue(const ScriptValue &, bool) EntityItemProperties.cpp:1192
EntityItemPropertiesFromScriptValueHonorReadOnly(const ScriptValue &, EntityItemProperties &) EntityItemProperties.cpp:1759
bool fromScriptValueWrapper<EntityItemProperties, &EntityItemPropertiesFromScriptValueHonorReadOnly(ScriptValue const&, EntityItemProperties&)>(ScriptValue const&, QVariant&) EntityScriptingInterface.cpp:60
ScriptEngineV8::castValueToVariant(const V8ScriptValueTemplate<…> &, QVariant &, int) ScriptEngineV8_cast.cpp:333
ScriptMethodV8Proxy::call(const v8::FunctionCallbackInfo<…> &) ScriptObjectV8Proxy.cpp:1067
ScriptMethodV8Proxy::callback(const v8::FunctionCallbackInfo<…> &) ScriptObjectV8Proxy.cpp:998
Builtins_CallApiCallback 0x00007fe2c2ff3cef
<unknown> 0x00007fe2fb70f406
<unknown> 0x00007fe2fb71232c
Builtins_JSEntryTrampoline 0x00007fe2c2ff0adc
Builtins_JSEntry 0x00007fe2c2ff0803
[Inlined] v8::internal::GeneratedCode::Call(unsigned long, unsigned long, unsigned long, unsigned long, long, unsigned long **) simulator.h:156
v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate *, const v8::internal::(anonymous namespace)::InvokeParams &) 0x00007fe2c3651e4f
v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) 0x00007fe2c3652fcd
v8::Object::CallAsFunction(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) 0x00007fe2c3528917
ScriptSignalV8Proxy::qt_metacall(QMetaObject::Call, int, void **) ScriptObjectV8Proxy.cpp:1317
<unknown> 0x00007fe2d9918a4d
ScriptManagerScriptingInterface::update(float) moc_ScriptManagerScriptingInterface.cpp:912
QtPrivate::FunctorCall::call(void (ScriptManagerScriptingInterface::*)(float), ScriptManagerScriptingInterface *, void **) qobjectdefs_impl.h:152
QtPrivate::FunctionPointer::call<…>(void (ScriptManagerScriptingInterface::*)(float), ScriptManagerScriptingInterface *, void **) qobjectdefs_impl.h:185
QtPrivate::QSlotObject::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) qobjectdefs_impl.h:418
<unknown> 0x00007fe2d9918cbe
ScriptManager::update(float) moc_ScriptManager.cpp:899
ScriptManager::run() ScriptManager.cpp:1095
operator() ScriptManager.cpp:420
QtPrivate::FunctorCall::call((unnamed struct) &, void **) qobjectdefs_impl.h:146
QtPrivate::Functor::call<…>((unnamed struct) &, void *, void **) qobjectdefs_impl.h:256
QtPrivate::QFunctorSlotObject::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) qobjectdefs_impl.h:443
<unknown> 0x00007fe2d991890e
QThread::started(QThread::QPrivateSignal) 0x00007fe2d96dcbae
<unknown> 0x00007fe2d96decca
<unknown> 0x00007fe2d3aa1732
<unknown> 0x00007fe2d3b1c2b8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant