ZygoteProcess cannot be closed after the resident subprocess

Having problems with building or using CEF's C/C++ APIs? This forum is here to help. Please do not post bug reports or feature requests here.

ZygoteProcess cannot be closed after the resident subprocess

Postby yishanshui » Thu Dec 21, 2023 10:16 pm

system:
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?
yishanshui
Newbie
 
Posts: 2
Joined: Thu Dec 21, 2023 9:20 pm

Re: ZygoteProcess cannot be closed after the resident subpro

Postby yishanshui » Mon Dec 25, 2023 3:17 am

supplement:
the mycef is normal closed when i 'qprocess.startDetached()' in CefRenderProcessHandler::OnBrowserCreated.However, in CefBrowserProcessHandler::OnContextInitialized, when starting the child process, mycef will wait for my child process to exit.
yishanshui
Newbie
 
Posts: 2
Joined: Thu Dec 21, 2023 9:20 pm


Return to Support Forum

Who is online

Users browsing this forum: No registered users and 207 guests