multitheftauto / mtasa-blue

Multi Theft Auto is a game engine that incorporates an extendable network play element into a proprietary commercial single-player game.
https://multitheftauto.com
GNU General Public License v3.0
1.41k stars 438 forks source link

CEF Windows become blank on switch on some PC #1567

Open haron4igg opened 4 years ago

haron4igg commented 4 years ago

Describe the bug On some PC CEF framework shows extremely low performance and some side issues with multiple CEF windows. In archive attached bellow, there is a resource which creates 4 CEF-gui windows with very basic content. When user click on the links, current window become hidden (and setRenderingPaused set to true) and another window become visible. At some point, another window just apperas blank (white).

To reproduce webtest.zip

Environment Wndows 7, 64 bit. 4 Gb Ram CPU: AMD A8-7600 Radeon R7

Video How is it looks like (please ignore audio): https://youtu.be/-Duo6zHZPho

How is it suppose to be: https://youtu.be/8z6krUz7rKg

Additional context Orriginaly issue was observed with general low performance of CEF on this PC (client tried to open window since video beginning and it took ~43 seconds to load the window): https://youtu.be/HlwZivqx0eM?t=43

I've tried different implementations. Initial one was single-page application, with a lot of html and js code on the same page. Animations and general perfromance and load time was huge for this particular client. Later i tried to use one browser, but split logic by different pages. It shown better performance, but 'tab-switching' took to much time. So i've tried to make different CEF windows per tab. With latest approach, html page performance looks to be OK. But window switching and loading takes crazy amount of time and at some moment window context gets cleaned.

haron4igg commented 4 years ago

Got few crashes from PC mentioned above. May be somebody could tell me what could be the issue if its related to software/system so we may find solution how to repair environment.

-- Unhandled exception --

Version = 1.5.7-release-20582.0.000 Time = Sun Aug 16 14:36:25 2020 Module = D:\My\Games\MTA\MTA Laucher\MTA\libcef.dll Code = 0x80000003 Offset = 0x01C269C5

EAX=00000000 EBX=0028F3D4 ECX=00000000 EDX=7D8CA398 ESI=0028F824 EDI=0028F820 EBP=0028F818 ESP=0028F3B0 EIP=796F69C5 FLG=00200246 CS=0023 DS=002B SS=002B ES=002B FS=0053 GS=002B

-- End of unhandled exception --

-- Unhandled exception --

Version = 1.5.7-release-20582.0.000 Time = Sun Aug 16 15:02:15 2020 Module = D:\My\Games\MTA\MTA Laucher\MTA\libcef.dll Code = 0x80000003 Offset = 0x01C269C5

EAX=00000000 EBX=0028F3D4 ECX=00000000 EDX=7D8CA398 ESI=0028F824 EDI=0028F820 EBP=0028F818 ESP=0028F3B0 EIP=796F69C5 FLG=00200246 CS=0023 DS=002B SS=002B ES=002B FS=0053 GS=002B

-- End of unhandled exception --

dumps.zip

Dutchman101 commented 4 years ago

@haron4igg i advise to continue looking into this if it's still reproducible after MTA updates CEF, which will happen as soon https://bitbucket.org/chromiumembedded/cef/issues/2938/osr-transparent-background-broken-since is fixed so we're no longer blocked by it

But in advance: 1) what are the PC specs?

2) it would be useful if you re-install that entire PC, because CEF, like MTA (but even more so..), is very sensitive to system and OS corruption, to cause instability and performance issues. Troubleshooting some corruption that's hidden away somewhere is time-consuming, and so far you have only brought forward this issue as applying to a single user/a single PC. So to make this issue report, and the results from further investigation more reliable, please re-install it entirely so we can eliminate the chance of interference.

It must be a re-install from ISO disk (not a PC reset), after which you manually install all of the latest drivers, and wait with installing anything else until you get the opportunity to test again. That's why i advise to let this wait until the CEF update as well.

haron4igg commented 4 years ago

@Dutchman101 this is wndows 7, there is MTADIag attached in first msg.

I understand that with 99.8% chance it is OS issue. But since we get the same crash type, in different circumstances, i think it could be more effective to first try to find the cause and way to fix it on OS level.

I bet many people may experience it once i'll release the feature. there is ~15% windows 7 players i have, not sure i will be able to force all of them to install latest windows :D but release some tool which may repair OS dependencies, might be better way.

haron4igg commented 4 years ago

I finally released big UI update using CEF Menus.

So far few people reported same issue like described above, but i have no idea yet how many people didn't reported it... will try to setup some metrics to get better picture.

The feature it self is a cegui browser window with few HTML tabs inside, using ajax functions to fetch data from lua.

Player may open it or close on demand.

One Windows 7 player and Two windows 10 players reported same problem: when they press open button first time, it takes ~10-15 seconds for window to appear. Then, if they close the window, next time it wouldn't appear, or will apear in ~10 minutes.

When user closes the window, i put browser in rendering paused mode.

Here is few MTADiag reports from affected clients on windows 10: https://pastebin.mtasa.com/992523808 on windows 7: https://pastebin.mtasa.com/269409712

Upd: i can confirm now that this weird behavior is caused by setRenderingPaused() function. If i wouldn't toggle the browser rendering, when window is hidden (setVisible) and shown back, it happens immideately without any issues for these users. Also, if i completely destory webbrowser instead of hiding it, and will recreate it after - it will take long for user (like 10 seconds) but it will always appear.