-
-
Notifications
You must be signed in to change notification settings - Fork 21.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Large dictionaries cause the UI to become unresponsive #80959
Comments
Can you confirm this on 4.0.4 or another more recent version? |
Hi, I have just tried on Godot 4.1.1 and it still crashes my interface. The difference between versions is that in 4.1.1 the interface does eventually close while leaving my runtime window open. On 4.0.1 it crashes the interface and nothing else happens. |
And on 4.0.4? |
Tested on 4.0.4 mono and on standard 4.0.4 and it doesn't crash the editor with the same dictionary that it crashes the others with Edit: Scrap that, the editor stopped working when I tried to remove the breakpoint and continue the program. The UI still crashed, leaving the runtime running |
I can reproduce this bug. Also when I double click the And I think there are three problems here need testing and solving:
Editor version: Godot v4.2.dev (6f90b23) - Windows 10.0.22621 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3060 Ti (NVIDIA; 31.0.15.3699) - 12th Gen Intel(R) Core(TM) i7-12700F (20 Threads) |
Looks similar to #64569. |
About this problem : The serialize function for remote debug has a max size limit: But the length of the json dictionary is 3353848, bigger than 1 << 20, so it just using a new Variant as value instead. I think there might be two ways of fixing this:
Update: Solved by #74148 |
That makes a lot of sense. I think it would be more user friendly if the tool tip showed that the value is too large, rather than null. It has been the source of some confusion in our projects, especially for our non-programmers. Its unfortunate that the actual value can't be displayed |
About this, when the test file' szie is close to 1<<20 , the crash will happen. It's a vulkan related crash (crashed when create buffer), and I strongly suspect it's because the vertex for the flat style box is too large as the image shown. I think I can make a seperat PR for this and truncate the flat style box in advance? |
And the last piece of this problem, I find the hotspot like this: This is the related code:
Inside @Paulb23 Any thoughts? I guess maybe at least for json file we can just ignore the |
Many editors disable softwrapping for a given file when opening a file that is too large or has a longest line that is over 16,384 characters long or so. This is probably what I'd do. |
I dig into the code and find it's non trivial to simply add suppot for this, the problem lies in Have to pick up the hard way, find out why |
It probably won't make any difference, |
Still happening as of Godot 4.2 Stable Release. |
Bugsquad note: This issue has been confirmed several times already. No need to confirm it further.
Godot version
4.0.1 Stable
System information
Windows 11 Vulkan API 1.3.224 - Forward+ - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce RTX 3050 Laptop GPU
Issue description
The company I work for are using Godot for a commercial software project rather than a game and as such we deal with large dictionaries (sometimes have a size in the 1000s). When hitting a breakpoint, if we hover over the variable which is storing the dictionary, it makes the Godot UI to become unresponsive. The only way to get out of it is to hard-crash the editor (using Task Manager or closing the console window, if open).
Using the Stack Variable inspector does not cause this same issue.
Steps to reproduce
Minimal reproduction project
This is the project I made to reproduce this, putting a breakpoint on the print(1). Unfortunately, this also showed another bug. Even variables which are not null show as null when hovering over them and when inspecting them in the stack. Printing them does show their value.
dictionary crash.zip
The text was updated successfully, but these errors were encountered: