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
- Required SpriteMask class (ID 331) is stripped when "Strip Engine Code" is enabled
- “Maximized serialized file backup not found” error is thrown when minimizing a window in a newly opened project
- Build stack trace contains invalid lines when building with IL2CPP using scripts with delegates containing generic types in the signature
- Entities Systems window has a “Show Full Player Loop” dropdown which does nothing when clicked after enabling “Show Full Player Loop”
- Entities Hierarchy Search “Show/Hide” button’s Lens Icon is blurry when the Editor is on an external monitor
Add comment