View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0001853||NoesisGUI||Unity3D||public||2020-12-04 16:12||2020-12-11 12:13|
|Target Version||3.0.9||Fixed in Version||3.0.9|
|Summary||0001853: Unity crash being caused by a ListView ScollViewer style's GridViewHeaderRowPresenter element|
|Description||In our Unity project, we have a ListView with a style targeting type ScrollViewer. In the ScrollViewer element inside a ControlTemplate part of the style, we have a GridViewHeaderRowPresenter.|
What we're seeing is that this setup works just fine in WPF, but in Unity (either editor or build) viewing the pages which use the ListView control described above, we quickly get a crash with the following description:
Faulting application name: Unity.exe, version: 2019.4.9.65162, time stamp: 0x5f3b4240
Faulting module name: ucrtbase.dll, version: 10.0.18362.1110, time stamp: 0xb4cacc38
Exception code: 0xc0000409
Fault offset: 0x000000000006dace
Faulting process id: 0x6080
Faulting application start time: 0x01d6a78595d5865b
Faulting application path: D:\Unitys\2019.4.9f1\Editor\Unity.exe
Faulting module path: C:\WINDOWS\System32\ucrtbase.dll
This happens with no more specification than:
<ScrollViewer Focusable="False" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" PanningMode="HorizontalFirst">
If we remove <GridViewHeaderRowPresenter/> from the style declaration, the crash no longer occurs.
NOTE: I haven't been able to find any .dmp file associated with the crash. Attached are the Windows Event Viewer log of the error, and the player.log from the compiled Unity build of the project from when the app crashed with this error.
I have also attached a copy of the callstack from attaching VS after a crash, and the final exit point source as given from the pdb for ucrtbase.dll
|Steps To Reproduce||1. Add the attached page with the list view and the attached style page to a project|
2. add at least one other page to allow navigation back and forth to the list view page.
3. navigate back and forth, causing the list view page to load multiple times
4. eventually the crash will occur
|Tags||No tags attached.|
ListViewControlPage.xaml (881 bytes)
Style.xaml (1,174 bytes)
EventViewer.log (1,994 bytes)
Player.log (69,941 bytes)
purevirt.cpp (1,099 bytes)
VS_callstack.txt (968 bytes)
ucrtbase.dll!abort() Unknown > vcruntime140.dll!_purecall() Line 29 C++ Noesis.dll!00007ff844b39b06() Unknown Noesis.dll!00007ff844b39b84() Unknown Noesis.dll!00007ff844997a1b() Unknown 00000268eb75cb97() Unknown 00000268eb75ca73() Unknown 0000026ad1131ca3() Unknown 0000026ad112fc83() Unknown 0000026ad112f9d3() Unknown 0000026ad0050803() Unknown 0000026ad00502fb() Unknown 0000026adf87ebf8() Unknown mono-2.0-bdwgc.dll!mono_jit_runtime_invoke(_MonoMethod * method, void * obj, void * * params, _MonoObject * * exc, _MonoError * error) Line 2809 C mono-2.0-bdwgc.dll!do_runtime_invoke(_MonoMethod * method, void * obj, void * * params, _MonoObject * * exc, _MonoError * error) Line 2921 C [Inline Frame] mono-2.0-bdwgc.dll!mono_runtime_try_invoke(_MonoMethod *) Line 3026 C mono-2.0-bdwgc.dll!mono_runtime_invoke(_MonoMethod * method, void * obj, void * * params, _MonoObject * * exc) Line 2968 C [External Code]
VS_callstack.txt (968 bytes)
Here's a copy of the callstack from Visual Studio attached to the UnityEditor after the crash.
VS_Unity_callstack.txt (1,835 bytes)
ucrtbase.dll!abort() Unknown > vcruntime140.dll!_purecall() Line 29 C++ Noesis.dll!00007ff838389b06() Unknown Noesis.dll!00007ff838389b84() Unknown Noesis.dll!00007ff8381e7a1b() Unknown 000002280f4c712a() Unknown 000002280f4c707b() Unknown 000002281577bebb() Unknown 000002281577b00b() Unknown 000002281577aec3() Unknown 0000022815751813() Unknown 000002281575169b() Unknown 0000022778407940() Unknown mono-2.0-bdwgc.dll!00007ff82c94d690() Unknown mono-2.0-bdwgc.dll!00007ff82c8d2912() Unknown mono-2.0-bdwgc.dll!00007ff82c8db96f() Unknown UnityPlayer.dll!scripting_method_invoke(class ScriptingMethodPtr,class ScriptingObjectPtr,struct ScriptingArguments &,class ScriptingExceptionPtr *,bool) Unknown UnityPlayer.dll!ScriptingInvocation::Invoke(class ScriptingExceptionPtr *,bool) Unknown UnityPlayer.dll!MonoBehaviour::CallMethodIfAvailable(int) Unknown UnityPlayer.dll!MonoBehaviour::CallUpdateMethod(int) Unknown UnityPlayer.dll!BaseBehaviourManager::CommonUpdate<class LateBehaviourManager>(void) Unknown UnityPlayer.dll!LateBehaviourManager::Update(void) Unknown UnityPlayer.dll!`InitPlayerLoopCallbacks'::`2'::PreLateUpdateScriptRunBehaviourLateUpdateRegistrator::Forward() Unknown UnityPlayer.dll!ExecutePlayerLoop(struct NativePlayerLoopSystem *) Unknown UnityPlayer.dll!ExecutePlayerLoop(struct NativePlayerLoopSystem *) Unknown UnityPlayer.dll!PlayerLoop(void) Unknown UnityPlayer.dll!PerformMainLoop() Unknown UnityPlayer.dll!MainMessageLoop() Unknown UnityPlayer.dll!UnityMainImpl(struct HINSTANCE__ *,struct HINSTANCE__ *,wchar_t *,int) Unknown UnityPlayer.dll!UnityMain() Unknown Tennis Manager 2021.exe!__scrt_common_main_seh() Unknown kernel32.dll!BaseThreadInitThunk() Unknown ntdll.dll!RtlUserThreadStart() Unknown
VS_Unity_callstack.txt (1,835 bytes)
When Unity crashes it usually shows a crash dialog with the information of the crash, and it creates a folder under C:\Users\%UserName%\AppData\Local\Temp\Unity\Crashes with the logs and a .dmp file that we can use debug the crash.
If Unity closes without showing that dialog then you can run Unity and attach Visual Studio so when the crash occurs and pauses on Visual Studio you can go to menu "Debug > Save Dump As.." to save a minidump.
In the meantime I will try to reproduce the crash with the provided xaml and style, thanks.
|Unity definitely crashes without it's usual crash dialogue. I'm able to attach with Visual Studio, so I'll try reproducing it again and get Visual Studio to save out the dump as suggested.|
|So, I saved a .dmp file, but it's 2.3 Gbs(?!) I don't know if I can reliably upload it here, but I can try if you feel it will help. Alternately if there's some other place I could try dropping it, let me know.|
That looks like you are saving a full dump, can you save a Minidump?
If you don't get that option please upload the dump to Google Drive or similar, I'll let you know when I download it so you can delete the file.
By the way, I was not able to reproduce the crash with our recently released 3.0.8 version and Unity 2020. Which version of Noesis and Unity are you using?
Ok, apparently I accidentally included the heap in the last one. (oops!) I've attached the much more manageably sized one this time.
Unity.dmp (1,740,670 bytes)
I think I found the source of the crash, could you please try the following patched library?
Let me know if it works as expected.
Unity_2.dmp (1,771,051 bytes)
That seems like it's improved the length of time before the crash occurs, but the crash still occurs. I've attached the latest .dmp file.
I also forgot to specify previously, but our project is using Unity 2019.4.9
Added a few more checks, let's see if now I'm on the right path:
As before, if it continues crashing, please send the dumps, they are really helpful.
Thanks your collaboration.
|That seems to have gotten it! I was unable to get the crash to happen with that DLL! So, no more dumps for now ;) but thank you so much for your help with this! It was my pleasure to collaborate for my part, as small as it was. :)|
|2020-12-04 16:12||blafollette||New Issue|
|2020-12-04 16:12||blafollette||File Added: ListViewControlPage.xaml|
|2020-12-04 16:12||blafollette||File Added: Style.xaml|
|2020-12-04 16:12||blafollette||File Added: EventViewer.log|
|2020-12-04 16:12||blafollette||File Added: Player.log|
|2020-12-04 16:12||blafollette||File Added: purevirt.cpp|
|2020-12-04 16:12||blafollette||File Added: VS_callstack.txt|
|2020-12-04 16:13||jsantos||Assigned To||=> sfernandez|
|2020-12-04 16:13||jsantos||Status||new => assigned|
|2020-12-04 16:13||jsantos||Target Version||=> 3.0.9|
|2020-12-04 16:13||jsantos||Description Updated||View Revisions|
|2020-12-04 16:13||jsantos||Steps to Reproduce Updated||View Revisions|
|2020-12-04 16:23||blafollette||File Added: VS_Unity_callstack.txt|
|2020-12-04 16:23||blafollette||Note Added: 0006862|
|2020-12-04 17:16||sfernandez||Status||assigned => feedback|
|2020-12-04 17:16||sfernandez||Note Added: 0006863|
|2020-12-04 17:19||sfernandez||Category||C# SDK => Unity3D|
|2020-12-04 17:20||blafollette||Note Added: 0006864|
|2020-12-04 17:20||blafollette||Status||feedback => assigned|
|2020-12-04 17:45||blafollette||Note Added: 0006865|
|2020-12-04 17:54||sfernandez||Status||assigned => feedback|
|2020-12-04 17:54||sfernandez||Note Added: 0006866|
|2020-12-04 18:04||blafollette||File Added: Unity.dmp|
|2020-12-04 18:04||blafollette||Note Added: 0006867|
|2020-12-04 18:04||blafollette||Status||feedback => assigned|
|2020-12-04 19:12||sfernandez||Status||assigned => feedback|
|2020-12-04 19:12||sfernandez||Note Added: 0006868|
|2020-12-04 19:56||blafollette||File Added: Unity_2.dmp|
|2020-12-04 19:56||blafollette||Note Added: 0006869|
|2020-12-04 19:56||blafollette||Status||feedback => assigned|
|2020-12-05 00:28||sfernandez||Status||assigned => feedback|
|2020-12-05 00:28||sfernandez||Note Added: 0006870|
|2020-12-07 09:41||blafollette||Note Added: 0006878|
|2020-12-07 09:41||blafollette||Status||feedback => assigned|
|2020-12-11 12:13||sfernandez||Status||assigned => resolved|
|2020-12-11 12:13||sfernandez||Resolution||open => fixed|
|2020-12-11 12:13||sfernandez||Fixed in Version||=> 3.0.9|