Godot: 3.2 RC1 hangs on Windows, worked in beta 6 [GLES3] (regression from 796d35d)

Created on 17 Jan 2020  Â·  34Comments  Â·  Source: godotengine/godot

Godot version: 3.2 RC1 official
(3.2 beta 6 works, is without the problem)

OS/device including version: Windows 8.1 (64bit)
AMD A8-6410 APU with AMD Radeon R5 Graphics

Driver package version - 13.302.1501-140320a-169666C-Toshiba
2D Driver Version - 8.1.1.1634
OpenGL® Version - 25.20.15000.13547
OpenCLâ„¢ Version - 10.0.2766.5
AMD Mantle Version - 9.1.10.0295
AMD Mantle API Version - 102400
(Wasn't sure which are relevant, so copying more)

Issue description:
Whenever i try to open a project, i get a popup about AMD display driver that crashed and was recovered while in the meantime the editor during splash screen stops responding (when i try to close it i get the info visible below). The prompt shows basically nothing.
obraz
Crash
Steps to reproduce:
Try to open any project while using AMD?

bug high priority windows regression rendering

Most helpful comment

I was just about to jump on the Godot compiling bandwagon when I saw your comment @akien-mga :)
Your build with 796d35d reverted works, no hanging, this must've been the first bad commit.

All 34 comments

Can you copy the text from "problem details" and paste here. Also, in the meantime try updating your GPU drivers.

Does the Windows error dialog provide any useful logs?

Does it hang the same with GLES2 and GLES3?

Can you copy the text from "problem details" and paste here. Also, in the meantime try updating your GPU drivers.

I'm afraid i can't copy that, i can't even mark it
obraz
obraz

i'll try it manually, last time i checked it with Radeon's app it said everything is updated

Does the Windows error dialog provide any useful logs?

Does it hang the same with GLES2 and GLES3?

I'll try to find something, it doesn't provide anything with the isn't responding popup (if i can call it so)
Also, no, GLES2 works normally
So it's about GLES3

Does the Windows error dialog provide any useful logs?

I found something (in Windows' report archive)
I can't send it via browser though (as i check it can be opened with notepad)
https://cdn.discordapp.com/attachments/561684643313614867/667764011663884288/Report.wer

Can you copy the text from "problem details" and paste here. Also, in the meantime try updating your GPU drivers.

I just updated it, and the problem still remains
And here's the newest log (if that's what you meant, at least that's what i manage to find)
https://cdn.discordapp.com/attachments/561684643313614867/667773396917944321/Report.wer

Edit:
I've tried again to make a dump file of the process and i accidentally made Godot crash
Crash:
https://cdn.discordapp.com/attachments/561684643313614867/667785014104031281/Report.wer
Dump file: (over 330 MB, .DMP)
https://mega.nz/#!MgR0XIgI!HQlhqGGv1VDyTJXpwhw1Ln5pJ5XbV_T3_FWYfQy1elU

Between last running beta 6 and running RC1 did you have any major updates to your GPU drivers or OS? I searched up the "Hang Type" from your above report and it seems to be a common crash relating to OS updates/BIOS updates.

_Edit:_ Are you by any chance setting "force vsync" on your GPU settings?

Between last running beta 6 and running RC1 did you have any major updates to your GPU drivers or OS?

I don't think so, I asked them to retry beta 6 on Discord and they confirm that it was still working on the same system.

@NieznanywInternetach Could you test this build? It's the same as 3.2 RC 1 but with one commit reverted, which we have a hunch might be the cause for the issue.
https://downloads.tuxfamily.org/godotengine/3.2/tmp-test/godot-3.2-rc1-test1.zip

Between last running beta 6 and running RC1 did you have any major updates to your GPU drivers or OS? I searched up the "Hang Type" from your above report and it seems to be a common crash relating to OS updates/BIOS updates.

_Edit:_ Are you by any chance setting "force vsync" on your GPU settings?

I didn't have, it's possible though i don't update OS as often as i should....
Anyway, i found something when i was looking for the force vsync setting - i opened the device's profile and manually updated drivers. It didn't solved the problem but triggered Godot's error lines
obraz
obraz

@NieznanywInternetach Could you test this build? It's the same as 3.2 RC 1 but with one commit reverted, which we have a hunch might be the cause for the issue.
https://downloads.tuxfamily.org/godotengine/3.2/tmp-test/godot-3.2-rc1-test1.zip

sorry, it doesn't change anything.
obraz

Thanks for testing. And just to be 100% clear, if you run 3.2 beta 6 now on that system, it works without printing those initialize errors?

Thanks for testing. And just to be 100% clear, if you run 3.2 beta 6 now on that system, it works without printing those initialize errors?

Em... it's actually printed. The numbers of lines are different though. But GLES3's working
obraz

I can't explain why beta 6 would "work" (though those errors are fairly critical, chances are that it would not really work properly in a GLES3 game with meshes or lights) when RC 1 fails to start...

On the other hand those initialization errors do point at drivers that do not properly support OpenGL 3.3, which is surprising for AMD A8-6410 APU, which should support 4.3 or even 4.5 with latest drivers.

The drivers you had originally from Toshiba were quite old (2014). I'm not sure what version you got now which made things more verbose, but I would suggest that you try the latest drivers for this APU provided by AMD themselves: https://www.amd.com/en/support/apu/amd-series-processors/amd-a8-series-apu-for-laptops/a8-6410-radeon-r5-graphics

Windows might complain that those are not "made" for your hardware since usually laptop OEMs put some locks to force users to use their tested drivers from their own support website, but in my experience it's always safe and recommended to take the newer versions directly from the hardware vendor (here AMD).

I can't explain why beta 6 would "work" (though those errors are fairly critical, chances are that it would not really work properly in a GLES3 game with meshes or lights) when RC 1 fails to start...

On the other hand those initialization errors do point at drivers that do not properly support OpenGL 3.3, which is surprising for AMD A8-6410 APU, which should support 4.3 or even 4.5 with latest drivers.

The drivers you had originally from Toshiba were quite old (2014). I'm not sure what version you got now which made things more verbose, but I would suggest that you try the latest drivers for this APU provided by AMD themselves: https://www.amd.com/en/support/apu/amd-series-processors/amd-a8-series-apu-for-laptops/a8-6410-radeon-r5-graphics

Windows might complain that those are not "made" for your hardware since usually laptop OEMs put some locks to force users to use their tested drivers from their own support website, but in my experience it's always safe and recommended to take the newer versions directly from the hardware vendor (here AMD).

Well, i was working with 2D so far so didn't have a chance to experience that
also, when i said i updated my drivers first time
obraz
I meant downloading the app you just provide url to
And the error lines start showing when i "updated" it via my Windows
obraz

And the error lines start showing when i "updated" it via my Windows

It "updated" you back to a version from 2014 though, instead of the one from 2017 on AMD's website. That's because Toshiba stopped supporting your laptop and did not register newer versions as tested and compatible for their Windows 8 users. That Windows feature can't really be trusted, as it can only install the most recent version it knows about, which in this case is 13.302.1501.0 provided by Toshiba.

So I'd suggest to update manually back to AMD's 2017 version, which should bring you back to a better supported version.

Apparently it won't solve this bug, but it will likely fix those initialization issues which are a sign of a broken driver.

As someone who used to suffer from those init issues, GLES3 used to work (mostly, in practice I didn't see issues) with them (but still, there's the problem of RC1 not starting...)
How many commits between the two versions touched rendering? I seem to remember a PR to do with vsync and stutter mitigation?

And the error lines start showing when i "updated" it via my Windows

It "updated" you back to a version from 2014 though, instead of the one from 2017 on AMD's website. That's because Toshiba stopped supporting your laptop and did not register newer versions as tested and compatible for their Windows 8 users. That Windows feature can't really be trusted, as it can only install the most recent version it knows about, which in this case is 13.302.1501.0 provided by Toshiba.

So I'd suggest to update manually back to AMD's 2017 version, which should bring you back to a better supported version.

Apparently it won't solve this bug, but it will likely fix those initialization issues which are a sign of a broken driver.

Good to know

Yes, i've done it and no init error's printed
But Godot still doesn't work on GLES3, as expected

I also checked vsync in RC1 (in Project Settings) but both sets don't make any difference

Are you able to compile Godot from source? http://docs.godotengine.org/en/latest/development/compiling/compiling_for_windows.html

If so, our best shot now would probably that you run a git bisect between the beta 6 and rc 1 commits to try to pinpoint what causes the regression.

You can do that with:

// This is RC 1
git checkout ba7aca4199019529dec60555a5ff005f6692d281
scons p=windows -j4
// Check that you still reproduce the bug as with official binaries, otherwise the rest won't be useful.
git bisect start
git bisect bad
// This is beta 6
git checkout 0ab1726b43dbe81c96d208a41a582435b76fd058
git bisect good

Then it will automatically check out a commit in the middle to bisect, which you can compile, and issue either git bisect good if it works or git bisect bad if it doesn't. Rinse and repeat, eventually it should bring you to what caused the regression. Fair warning, that can take some time since each compilation may last between 5 and 20 min depending on how fast your CPU is.

Are you able to compile Godot from source? http://docs.godotengine.org/en/latest/development/compiling/compiling_for_windows.html

If so, our best shot now would probably that you run a git bisect between the beta 6 and rc 1 commits to try to pinpoint what causes the regression.

You can do that with:

// This is RC 1
git checkout ba7aca4199019529dec60555a5ff005f6692d281
scons p=windows -j4
// Check that you still reproduce the bug as with official binaries, otherwise the rest won't be useful.
git bisect start
git bisect bad
// This is beta 6
git checkout 0ab1726b43dbe81c96d208a41a582435b76fd058
git bisect good

Then it will automatically check out a commit in the middle to bisect, which you can compile, and issue either git bisect good if it works or git bisect bad if it doesn't. Rinse and repeat, eventually it should bring you to what caused the regression. Fair warning, that can take some time since each compilation may last between 5 and 20 min depending on how fast your CPU is.

I've never compiled anything more complicated than a mini-console program while learning C++, but sure, i can try. And as far as i know my thing, it'll take minimum 30 min though
But we'll see
i'll be updating this comment over time

Yeah it's a bit cumbersome when you're not familiar with the process, I wish we had saved builds for each commit to test with.

I can make a couple builds quickly to already start to reduce the range of possible problematic commits (basically doing the first couple of steps of git bisect manually).

Here's the first one to test (halfway between b6 and rc1):
https://downloads.tuxfamily.org/godotengine/3.2/tmp-test/godot.20190114.7971ec74f9.exe.zip

I'll check it
also, it seems i'll be able to compile it tommorow after 15 (21:23 over here) based i need to update VS (4.30~ GB) and my download speed is around 100kbps now (only at daytime achieving 2-3Mbps)

Edit:
0.50 bad, i'll check 0.25

0.25 is bad too

Edit2:
With @Calinou we've found the first working commit, now we'll be calibrating this debugging gun :^)

@Calinou and @NieznanywInternetach finished the git bisect started above (thanks!):

796d35d8b3af2ea78767149c07a2aae4bd0510cf is the first bad commit
commit 796d35d8b3af2ea78767149c07a2aae4bd0510cf
Author: clayjohn <[email protected]>
Date:   Sun Jan 12 14:45:31 2020 -0800

    Fix generation of irradiance map

 drivers/gles3/shaders/cubemap_filter.glsl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

That's 796d35d8b3af2ea78767149c07a2aae4bd0510cf.

It's a bit surprising as there's already code using textureLod() similarly in the same shader, so it shouldn't be a problem of textureLod() not being supported a priori.

I'll make a build of RC 1 with that commit reverted to confirm that it's indeed the problematic change.

@NieznanywInternetach @katoneko Could you try this build?
https://downloads.tuxfamily.org/godotengine/3.2/tmp-test/godot.3.2.rc1.796d35d-reverted.exe.zip

It's the same as 3.2 RC 1, but with commit 796d35d reverted as per https://github.com/godotengine/godot/issues/35242#issuecomment-575884889.
If it works, that would confirm that this commit indeed causes the issue.

I was just about to jump on the Godot compiling bandwagon when I saw your comment @akien-mga :)
Your build with 796d35d reverted works, no hanging, this must've been the first bad commit.

@NieznanywInternetach also told me a build of the latest commit with the irradiance size changed to 32 on this line worked. According to reduz, this is because the textureLod() generation takes too much time with the irradiance size set to 64.

@NieznanywInternetach @katoneko Could you try this build?
https://downloads.tuxfamily.org/godotengine/3.2/tmp-test/godot.3.2.rc1.796d35d-reverted.exe.zip

It's the same as 3.2 RC 1, but with commit 796d35d reverted as per #35242 (comment).
If it works, that would confirm that this commit indeed causes the issue.

Yup, it works. The same like the one sent by Calinou

So i suppose the problem's solved and the issue can be closed

So i suppose the problem's solved and the issue can be closed

We still need to write a fix :)
Reverting that commit introduces back another bug, so it would only be a last resort solution.

So i suppose the problem's solved and the issue can be closed

We still need to write a fix :)
Reverting that commit introduces back another bug, so it would only be a last resort solution.

Oh, right. I had on mind what i could do to help is done. So good luck!

I made test builds of the current master branch (e8dc581) + PR #35302 which should fix this issue. Could you test them to confirm?

The build works but it takes longer (~8 seconds) to load a project compared to ~4 secs on 3.1. Not sure whether that's natural or connected to the issue, just letting you know in case it's important.

I made test builds of the current master branch (e8dc581) + PR #35302 which should fix this issue. Could you test them to confirm?

* Windows (@NieznanywInternetach @katoneko @jgodfrey): https://downloads.tuxfamily.org/godotengine/3.2/tmp-test/godot.3.2.rc.e8dc581%2bGH-35302.64.exe.zip

* Linux (@Berkru): https://downloads.tuxfamily.org/godotengine/3.2/tmp-test/godot.3.2.rc.e8dc581%2bGH-35302.x86_64.zip

It works for me as well
And i tested the increase of loading time:

Your build:
for GLES 3 it's 8 (+/- 0.3) seconds no matter of size of the project,
for empty GLES2 it's 6.5 (+/- 0.3) seconds

3.2 beta 6:
for full project in GLES3 it's 9.5 (+/- 0.5) seconds (but i may increased it a bit by my surprice),
empty GLES3: 9 (+/- 0.3) seconds
for empty GLES2 it's 6.5 (+/- 0.3) seconds

3.1.1 (27.04.2019)
full project GLES3 6.2 (+/- 0.3)
empty GLES3 5.5 (+/- 0.3)
empty GLES2 5.9 (+/- 0.3)

Thanks! I think the increased start times are expected due to the increased complexity of the shaders to support more rendering features. Some of the new additions could likely be optimized to reduce the overhead a bit, but the increase shown in above comments seems acceptable (as long as performance is then also fine).

Was this page helpful?
0 / 5 - 0 ratings

Related issues

testman42 picture testman42  Â·  3Comments

timoschwarzer picture timoschwarzer  Â·  3Comments

bojidar-bg picture bojidar-bg  Â·  3Comments

nunodonato picture nunodonato  Â·  3Comments

RebelliousX picture RebelliousX  Â·  3Comments