Search Issue Tracker
Fixed
Fixed in 6000.3.0b5, 6000.4.0a2
Votes
0
Found in
6000.3.0b3
6000.4.0a1
Issue ID
UUM-120051
Regression
Yes
Crash on IDList::GetNext when selecting an item in a specific dropdown list
How to reproduce:
1. Open the attached “CrashRepro“ project
2. Open the “Assets/Scenes/CrashScene.unity“ Scene
3. Select the “Crash Producer“ GameObject in the Hierarchy
4. In the Inspector, select the “Crash Drop Down“ dropdown list
5. Select any of the items in the list (steps 4 to 5 sometimes need to be repeated up to 5+ times)
Reproducible with: 6000.3.0a3, 6000.3.0b3, 6000.4.0a1
Not reproducible with: 6000.2.6f1, 6000.3.0a2
Can’t test with: 6000.0.58f1 (Errors in the Console)
Reproducible on: macOS 15.6.1 Sequoia (Intel), Windows 10 (by user)
Not reproducible on: No other environment tested
First few lines of the stack trace:
0x00007FFE61682910 (Unity) IDList::GetNext
0x00007FFE61682B12 (Unity) IDList::GetNext
0x00007FFE6168AD11 (Unity) GUIState::GetControlID
0x00007FFE6168ADEE (Unity) GUIState::GetControlID
0x00007FFE61674F35 (Unity) GUIUtility_CUSTOM_Internal_GetControlID
UPDATE:
The crash is due to native IMGUI memory corruption that's being exposed by the SearchablePopup UI contained within this Package. The class contains incorrect IMGUI usage, in which the List control is access and manipulated after the EditorWindow is closed.
Obviously the Editor shouldn't crash; that's unacceptable and will be fixed, however you can work around the issue with a simple code change within .../Framework/Editor/SearchablePopup.cs:
private void DrawSelectionArea(Rect scrollRect)
{
Rect contentRect = new Rect(0, 0,
scrollRect.width - GUI.skin.verticalScrollbar.fixedWidth,
_list.Entries.Count * ROW_HEIGHT);
_scrollPosition = GUI.BeginScrollView(scrollRect, _scrollPosition, contentRect);
Rect rowRect = new Rect(0, 0, scrollRect.width, ROW_HEIGHT);
bool closeWindow = false; // CHANGE
for (int i = 0; i < _list.Entries.Count; i++)
{
if (_scrollToIndex == i && (Event.current.type == EventType.Repaint || Event.current.type == EventType.Layout))
{
GUI.ScrollTo(new Rect(rowRect).WithY(rowRect.y + _scrollOffset));
_scrollToIndex = -1;
_scrollPosition.x = 0;
}
if (rowRect.Contains(Event.current.mousePosition))
{
if (Event.current.type == EventType.MouseMove || Event.current.type == EventType.ScrollWheel)
{
_hoverIndex = i;
}
if (Event.current.type == EventType.MouseDown)
{
_onSelectionMade(_list.Entries[i].Index);
closeWindow = true; // CHANGE
}
}
DrawRow(rowRect, i);
rowRect.y = rowRect.yMax;
}
GUI.EndScrollView();
// CHANGE
// Wait until all IMGUI operations have completed before closing the window.
// Close will immediately destroy the MonoBehaviour object and invalidate IMGUI data.
if (closeWindow)
EditorWindow.focusedWindow.Close();
}
(Apologies for the bad formatting, the ticketing system doesn't handle code well, and I can't make it display properly).
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Flickering bright white dots in the Scene when the Android Platform is selected and DX11 Graphics API is used with Iris(R) Xe Graphics GPU
- Inconsistent capitalization and misaligned text in multiple query blocks in Search window
- “Remove Unused Overrides” available on not loaded Scene and throws “ArgumentException: The scene is not loaded” warning
- Adaptive Probe Volume occlusion edge is calculated incorrectly when viewing probes near geometry edges
- WebGL sends wrong value with large numbers when SendMessage function is used
Add comment