ubuntu20 LTS , cef111 , qt5.15
Objective:
I want to start a local qsocket service through my own registered js function when the browser is running. The code is [QProcess process; process.startDetached("./mysocket");].
Problem:
After I execute TryCloseBrowser():
1、The closing actions executed on Linux and Windows are inconsistent. Linux does not send a close message to the top-level window, which causes doClose() to be executed and then OnBeforeClose() to be executed directly. Why are the actions inconsistent here?
- Code: Select all
void AlloyBrowserHostImpl::CloseContents(content::WebContents* source) {
...
platform_delegate_->CloseHostWindow();
...
}
// browser_platform_delegate_native_win.cc
void CefBrowserPlatformDelegateNativeWin::CloseHostWindow() {
if (window_info_.window != NULL) {
HWND frameWnd = GetAncestor(window_info_.window, GA_ROOT);
PostMessage(frameWnd, WM_CLOSE, 0, 0);
}
}
// browser_platform_delegate_native_linux.cc
void CefBrowserPlatformDelegateNativeLinux::CloseHostWindow() {
#if BUILDFLAG(OZONE_PLATFORM_X11)
if (window_x11_) {
window_x11_->Close();
}
#endif
}
// window_x11.cc [xwindow_ not top window]
void CefWindowX11::Close() {
if (xwindow_ == x11::Window::None) {
return;
}
// xwindow_ not top window ****************************
ui::SendClientMessage(
xwindow_, xwindow_, x11::GetAtom(kWMProtocols),
{static_cast<uint32_t>(x11::GetAtom(kWMDeleteWindow)),
static_cast<uint32_t>(x11::Time::CurrentTime), 0, 0, 0},
x11::EventMask::NoEvent);
auto host = GetHost();
if (host) {
host->Close();
}
}
2、ZygoteProcess is still alive. It should be waiting for mysocket to finish, because after I close mysocket, ZygoteProcess finishes. process.startDetached should have created a new process that is independent of the process, right?
- Code: Select all
KKK@KKK-pc:~/gcode/xc_efc/cef_111_linux/build$ ps -ef | grep mycef
KKK 5085 4194 9 11:00 pts/0 00:00:02 /myfile/myfile/Release/Release/mycef
KKK 5089 5085 0 11:00 pts/0 00:00:00 /myfile/myfile/Release/Release/mycef --type=zygote --no-zygote-sandbox --no-sandbox --log-severity=disable --lang=en-US --user-data-dir=/myfile/myfile/Release/Release/udata --log-file=/myfile/myfile/Release/Release/debug.log
KKK 5090 5085 0 11:00 pts/0 00:00:00 /myfile/myfile/Release/Release/mycef --type=zygote --no-sandbox --log-severity=disable --lang=en-US --user-data-dir=/myfile/myfile/Release/Release/udata --log-file=/myfile/myfile/Release/Release/debug.log
KKK 5108 5089 3 11:00 pts/0 00:00:00 /myfile/myfile/Release/Release/mycef --type=gpu-process --no-sandbox --log-severity=disable --lang=en-US --user-data-dir=/myfile/myfile/Release/Release/udata --gpu-preferences=WAAAAAAAAAAgACAIAAAAAAAAAAAAAAAAAABgAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAABAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== --use-gl=angle --use-angle=swiftshader-webgl --log-file=/myfile/myfile/Release/Release/debug.log --shared-files --field-trial-handle=0,i,4747639100507286528,16138414388062118601,131072 --disable-features=BackForwardCache
KKK 5403 5090 0 11:00 pts/0 00:00:00 /myfile/myfile/Release/Release/mycef --type=utility --utility-sub-type=storage.mojom.StorageService --lang=zh-CN --service-sandbox-type=utility --no-sandbox --ignore-certificate-errors --ignore-certificate-errors --log-severity=disable --lang=en-US --user-data-dir=/myfile/myfile/Release/Release/udata --log-file=/myfile/myfile/Release/Release/debug.log --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,4747639100507286528,16138414388062118601,131072 --disable-features=BackForwardCache
KKK 5422 5085 4 11:00 pts/0 00:00:00 /myfile/myfile/Release/Release/mycef --type=utility --utility-sub-type=network.mojom.NetworkService --lang=zh-CN --service-sandbox-type=none --no-sandbox --ignore-certificate-errors --ignore-certificate-errors --log-severity=disable --lang=en-US --user-data-dir=/myfile/myfile/Release/Release/udata --log-file=/myfile/myfile/Release/Release/debug.log --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,4747639100507286528,16138414388062118601,131072 --disable-features=BackForwardCache
KKK 8871 5090 27 11:00 pts/0 00:00:04 /myfile/myfile/Release/Release/mycef --type=renderer --log-severity=disable --user-data-dir=/myfile/myfile/Release/Release/udata --no-sandbox --log-file=/myfile/myfile/Release/Release/debug.log --use-fake-ui-for-media-stream --js-flags=--expose-gc --disable-gpu-compositing --lang=zh-CN --num-raster-threads=4 --enable-main-frame-before-activation --renderer-client-id=5 --time-ticks-at-unix-epoch=-1703212372496971 --launch-time-ticks=1687059186 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,4747639100507286528,16138414388062118601,131072 --disable-features=BackForwardCache
KKK 14542 5090 0 11:01 pts/0 00:00:00 /myfile/myfile/Release/Release/mycef --type=renderer --log-severity=disable --user-data-dir=/myfile/myfile/Release/Release/udata --no-sandbox --log-file=/myfile/myfile/Release/Release/debug.log --use-fake-ui-for-media-stream --js-flags=--expose-gc --disable-gpu-compositing --lang=zh-CN --num-raster-threads=4 --enable-main-frame-before-activation --renderer-client-id=8 --time-ticks-at-unix-epoch=-1703212372496971 --launch-time-ticks=1688965448 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,4747639100507286528,16138414388062118601,131072 --disable-features=BackForwardCache
KKK 15031 4638 0 11:01 pts/2 00:00:00 grep --color=auto mycef
KKK@KKK-pc:~/gcode/xc_efc/cef_111_linux/build$ ps -ef | grep mysocket
KKK 6367 1 0 11:00 ? 00:00:00 /myfile/myfile/Release/Release/serve/mysocket
KKK 15063 4638 0 11:01 pts/2 00:00:00 grep --color=auto mysocket
// CLOSED mycef
KKK@KKK-pc:~/gcode/xc_efc/cef_111_linux/build$ ps -ef | grep mysocket
KKK 6367 1 0 11:00 ? 00:00:00 /myfile/myfile/Release/Release/serve/mysocket
KKK 16736 4638 0 11:01 pts/2 00:00:00 grep --color=auto mysocket
KKK@KKK-pc:~/gcode/xc_efc/cef_111_linux/build$ ps -ef | grep mycef
KKK 5089 1 0 11:00 pts/0 00:00:00 /myfile/myfile/Release/Release/mycef --type=zygote --no-zygote-sandbox --no-sandbox --log-severity=disable --lang=en-US --user-data-dir=/myfile/myfile/Release/Release/udata --log-file=/myfile/myfile/Release/Release/debug.log
KKK 5090 1 0 11:00 pts/0 00:00:00 /myfile/myfile/Release/Release/mycef --type=zygote --no-sandbox --log-severity=disable --lang=en-US --user-data-dir=/myfile/myfile/Release/Release/udata --log-file=/myfile/myfile/Release/Release/debug.log
KKK 15084 5090 0 11:01 pts/0 00:00:00 [mycef] <defunct>
KKK 16740 4638 0 11:01 pts/2 00:00:00 grep --color=auto mycef
// pid 1 is init , also maybe to 4638(bash)
// after killed mysocket , mycef will closed
// my code just in OnProcessMessageReceived with UI_THREAD to use qprocess::startDetached("mysocket");
anyone can help me?