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
- WebGPU performance regression
- Addressables Report window UI is broken when opening via Build > New Build > Default Build Script
- Addressables Profiles window UI break when creating a new Variable with a long name
- No character limit when renaming Profile in Addressables Profile window, allowing excessively long names
- Blurry, low quality Active Profile icon used in Addressables Profiles window
Add comment