Hi,
we have problem with "frozen/stuck" render process (blank/white window) on some machines, when applications is displaying more window with same origin(more browser processes vs 1 render process).
This problem is presented mostly on Windows 10 64bit and machines with 1 core (noticed also on CPU Intel Xeon v2 2,7 GHz - 2 cores)
CEF version: 3.2987.1601.gf035232_windows32 / chromium 57.0.2987.133
I'm are pretty sure it is related to chromium switch "--process-per-site"
Render Process is waiting for response from CefProcessHostMsg_GetNewBrowserInfo...
I try to describe what's goning on:
During the creation of new Browser instance -> there is registering BrowserInfo (which is defined by comination of ID RenderProcessID + RenderViewID)
This info is stored into BrowserInfoManager container. After Browser is created - LoadUrl is called, during this call another BrowserInfo is trying to stored/registered,
but on the IO thread a "moment" before the BrowseInfo is stored, render process send IPC message to obtain BrowserInfo for current Browser, CefBrowserInfoManager::GetInstance()->OnGetNewBrowserInfo(render_process_id_, render_view_routing_id, render_frame_routing_id, ... )
But in this moment the BrowserInfo with "requested combination of IDs" is not stored in BrowserInfoManager.
So render process is waiting for reply message and is stuck!!
Correct behavior on Win7:
--------------------------------------------------------------------------------
BrowserProcess: MainThread:
Browser is created
BrowserInfo with RenderProcesID = 3, RenderViewID=1 is stored
LoadUrl is called
BrowserInfo with RenderProcesID = 3, RenderViewID=1 is stored (duplication)
BrowserProcess : IO Thread is asking for BrowserInfo for RenderProcesID = 3, RenderViewID=1 -> browser info is returned - OK
Wrong behavior on Win10: OSBuild: 15063.632
--------------------------------------------------------------------------------
BrowserProcess: MainThread:
Browser is created
BrowserInfo with RenderProcesID = 3, RenderViewID=1 is stored
LoadUrl is called
BrowserInfo with RenderProcesID = 2, RenderViewID=4 is stored but due to lock for container it is not inserted !!!
BrowserProcess : IO Thread is asking for BrowserInfo for RenderProcesID = 2, RenderViewID=4 -> browser info is not returned - FAIL
I can see 2 possible problems:
1) Wrong Render Process ID generation
or
2) RaceCondition during storing pair od RenderProcessID into BrowserInfoManager container.
Is anybody fighting with similar issue?
Any help would be greatly appreciated!
We are using "--process-per-site" switch as a memory optimization. Removing of this cmd line switch will help. But we would like to save some memory.
Thanks