View Issue Details

IDProjectCategoryView StatusLast Update
0002911NoesisGUIUnitypublic2023-12-02 00:48
Reporter[email protected] Assigned To 
PrioritynormalSeveritycrash 
Status newResolutionopen 
Product Version3.2.0 
Summary0002911: Intermittent race/crash when updating popup bindings and updating layout under WebGL
Description

Uncaught RuntimeError: null function or function signature mismatch
at Noesis::Delegate<void (Noesis::PropertyMetadata)>::operator()(Noesis::PropertyMetadata) const (0d95134a:0xb181c0)
at Noesis::Mouse::SetOver(Noesis::Mouse::HitInfo const&) (0d95134a:0xbe7e2e)
at Noesis::Mouse::Capture(Noesis::UIElement, Noesis::CaptureMode, bool) (0d95134a:0xbe7b60)
at Noesis::Mouse::Capture(Noesis::UIElement
, Noesis::CaptureMode) (0d95134a:0xbe7a37)
at Noesis::Popup::MouseCapture() (0d95134a:0xbe21d7)
at Noesis::Popup::OnPropertyChanged(Noesis::DependencyPropertyChangedEventArgs const&) (0d95134a:0xbe200a)
at Noesis::DependencyObject::NotifyPropertyChanged(Noesis::DependencyProperty const, Noesis::StoredValue, void const, void const, bool, bool, Noesis::PropertyMetadata const) (0d95134a:0xafb2f4)
at Noesis::DependencyObject::InternalSetValue(Noesis::DependencyProperty const
, void, void const, void, unsigned char, Noesis::Expression, Noesis::PropertyMetadata const, Noesis::Value::Destination, bool) (0d95134a:0xafb0cb)
at Noesis::ValueStorageManagerImpl<bool>::SetValue(Noesis::DependencyObject
, Noesis::DependencyProperty const, Noesis::BaseComponent, unsigned char, Noesis::Expression, Noesis::PropertyMetadata const, Noesis::Value::Destination) const (0d95134a:0xcbfa89)
at Noesis::DependencyProperty::SetValueObject(Noesis::DependencyObject, Noesis::BaseComponent, unsigned char, Noesis::Expression, Noesis::PropertyMetadata const, Noesis::Value::Destination) const (0d95134a:0xafd271)
at Noesis::DependencyObject::InternalSetExpression(Noesis::DependencyProperty const, Noesis::Expression, unsigned char) (0d95134a:0xaf9a0b)
at Noesis::DependencyObject::InternalInvalidateProperty(Noesis::DependencyProperty const, unsigned char) (0d95134a:0xaf9b0d)
at Noesis::DependencyObject::InvalidateProperty(Noesis::DependencyProperty const
, unsigned char) (0d95134a:0xaf9cad)
at Noesis::BindingExpression::InvalidateTarget() const (0d95134a:0xb79cbb)
at Noesis::BindingExpression::OnNotifyPropertyChanged(Noesis::BaseComponent, Noesis::PropertyChangedEventArgs const&) (0d95134a:0xb7c062)
at Noesis::Delegate<void (Noesis::Freezable
, Noesis::FreezableEventReason)>::MemberFuncStub<Noesis::DependencyObject::ChangedHandler, void (Noesis::DependencyObject::ChangedHandler::)(Noesis::Freezable, Noesis::FreezableEventReason)>::Invoke(Noesis::Freezable, Noesis::FreezableEventReason) const (0d95134a:0xafc050)
at Noesis::Delegate<void (Noesis::DependencyObject
, Noesis::DependencyPropertyChangedEventArgs const&)>::operator()(Noesis::DependencyObject, Noesis::DependencyPropertyChangedEventArgs const&) const (0d95134a:0xafaa73)
at Noesis::Delegate<void (Noesis::Freezable
, Noesis::FreezableEventReason)>::MultiDelegate::Invoke(Noesis::Freezable, Noesis::FreezableEventReason) const (0d95134a:0xafc2f2)
at Noesis::Delegate<void (Noesis::DependencyObject
, Noesis::DependencyPropertyChangedEventArgs const&)>::operator()(Noesis::DependencyObject, Noesis::DependencyPropertyChangedEventArgs const&) const (0d95134a:0xafaa73)
at Noesis_LaunchPropertyChangedEvent (0d95134a:0xc4f106)
at Extend_NotifyPropertyChanged_m4C6AEF46F1B7B41759EE4339CE2D1E22FA80B027 (0d95134a:0x1902d6f)
at KeyGeneratedEventHandler_Invoke_mD73F8C7BC0305037EC520C3F4AF3DE74E5481DDA_OpenStatic(KeyGeneratedEventHandler_t5EDD824AAD4D47A4C32E693596793AB83DB84107
, Il2CppObject, EventArgs_t37273F03EAC87217701DD431B190FBD84AD7C377, MethodInfo const) (0d95134a:0x21bb9f)
at U3CU3EcDisplayClass3_0_U3CNotifyPropertyChangedU3Eb0_m0917F2C64D8F1C85AA44BD2E115F99F9CB0D092E (0d95134a:0x1dee636)
at U3CActionWrapperU3Ed__9_MoveNext_m1CFEC200F3CE9D502AD9F66FDB71157E205A3502 (0d95134a:0x1e31366)
at SetupCoroutine_InvokeMoveNext_m72FC77384CAC3133B6EE650E0581D055B34B2F5F (0d95134a:0x1f51f49)
at RuntimeInvoker_FalseVoid_t4861ACF8F4594C3437BB48B6E56783494B843915_VoidU2A_t104EAEFBD2D237A8C29618913DA9B4D99355E965_Int32_t680FF22E76F6EFAD4375103CBBFFA0421349384C(void (
)(), MethodInfo const, void, void, void) (0d95134a:0x24ba587)
at il2cpp::vm::Runtime::InvokeWithThrow(MethodInfo const
, void*, void) (0d95134a:0x24d1d40)
at dynCall_iiii (0d95134a:0x252fc7e)
at invoke_iiii (1aafc9a6-c9d8-4df0-82f1-914a3cdb1c3b:136:517727)
at il2cpp::vm::Runtime::Invoke(MethodInfo const, void, void
, Il2CppException*) (0d95134a:0x24d0de2)
at il2cpp_runtime_invoke (0d95134a:0x24d2e5f)
at scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr
, bool) (0d95134a:0x24d410d)
at ScriptingInvocation::Invoke(ScriptingExceptionPtr, bool) (0d95134a:0x17c9cf9)
at Coroutine::Run(bool
) (0d95134a:0x172fad5)
at MonoBehaviour::TryCreateAndRunCoroutine(ScriptingObjectPtr, ScriptingMethodPtr, Coroutine
) (0d95134a:0xdfd6cb)
at MonoBehaviour_CUSTOM_StartCoroutineManaged2(Il2CppObject, Il2CppObject) (0d95134a:0x1770626)
at MonoBehaviour_StartCoroutine_m4CAFF732AA28CD3BDC5363B44A863575530EC812 (0d95134a:0x1f54b5e)
at U3CU3EcDisplayClass10_0_U3CInvokeU3Eb0_mED84D20A7D5179F060156B6C70B336DB33B7527B (0d95134a:0x1e31302)
at UnityDispatcher_Update_mB9A32436F5525A7D8D8A68EA42FE07679F8065E7 (0d95134a:0x1e3106a)
at RuntimeInvoker_TrueVoid_t4861ACF8F4594C3437BB48B6E56783494B843915(void ()(), MethodInfo const, void*, void*, void) (0d95134a:0x2496c31)
at il2cpp::vm::Runtime::InvokeWithThrow(MethodInfo const, void, void) (0d95134a:0x24d1d40)
at dynCall_iiii (0d95134a:0x252fc7e)
at invoke_iiii (1aafc9a6-c9d8-4df0-82f1-914a3cdb1c3b:136:517727)
at il2cpp::vm::Runtime::Invoke(MethodInfo const, void, void
, Il2CppException*) (0d95134a:0x24d0de2)
at il2cpp_runtime_invoke (0d95134a:0x24d2e5f)
at scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr
, bool) (0d95134a:0x24d410d)
at ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) (0d95134a:0x17c9cf9)
at MonoBehaviour::CallUpdateMethod(int) (0d95134a:0xdfd2bf)
at MonoBehaviour::Update() (0d95134a:0xdfd2d4)
at BehaviourManager::Update() (0d95134a:0x1582a13)

Steps To Reproduce

I haven't isolated precise steps yet, but this is affecting users in production, so I wanted to surface it. Because this is fairly intermittent, I suspect a race condition is involved.

The basic flow is:

Resize screen (in this case unity webgl)
Hide all popups by setting (via binding) IsOpen=false
Wait a few frames
Show them again by updating IsOpen binding to true

Incidentally, were doing this because of another bug where popups sometimes become detached from their anchors when the screen resizes (happens in unity and webgl). I didn't report that one yet, but the workaround is (was) to just close and open them again later.

PlatformWebGL

Activities

dmacd10@gmail.com

[email protected]

2023-12-02 00:48

reporter   ~0008995

Update: It turns out I was manipulating Popup.StaysOpen = false / true at the same time as IsOpen. Leaving this out, I haven't been able to reproduce the crash.

Issue History

Date Modified Username Field Change
2023-12-01 02:38 [email protected] New Issue
2023-12-02 00:48 [email protected] Note Added: 0008995
2025-10-10 13:29 jsantos Category Unity3D => Unity