Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-104436

V8 error when using WebEngine with --single-process and proxy auto-config

    XMLWordPrintable

Details

    • Windows
    • 1b6633d1ce (qt/qtwebengine/dev) e83ed04bd3 (qt/qtwebengine/6.3) e83ed04bd3 (qt/tqtc-qtwebengine/6.3) 1b6633d1ce (qt/tqtc-qtwebengine/dev) e83ed04bd3 (qt/qtwebengine/6.3.2) 9669a4cdf3 (qt/qtwebengine/6.4) 9669a4cdf3 (qt/tqtc-qtwebengine/6.4)

    Description

      WebEngine projects seem to be incompatible with --single-process mode when used in conjunction with proxy auto-configuration (PAC).
       
      Steps to reproduce:

      • Enable proxy auto-configuration (PAC) in Windows as described in the section below.
      • Open quicknanobrowser sample project.
      • Apply the attached single-process-crash-with-pac.patch to enable --single-process mode.
      • Build in debug mode and start application.
      • Observe [19912:3352:0618/161615.949:FATAL:v8_initializer.cc(95)] V8 error: Entering the V8 API without proper locking in place followed by a crash during startup.

       The reason for using --single-process is that I'm working in a security hardened environment where all network access is disabled by default. Firewall whitelisting is performed on an per-app basis. The app EXE therefore need to be the process responsible for network communication in order for firewall whitelisting to work.

       Application output:

      21:11:31: Starting C:\Qt\Examples\Qt-6.3.1\webenginequick\build-quicknanobrowser-Desktop_Qt_6_3_1_MSVC2019_64bit-Debug\debug\quicknanobrowser.exe...
      QML debugging is enabled. Only use this in a safe environment.
      qt.webenginecontext: 
      
      GL Type: desktop
      Surface Type: OpenGL
      Surface Profile: CompatibilityProfile
      Surface Version: 4.6
      QSG RHI Backend: OpenGL
      Using Supported QSG Backend: yes
      Using Software Dynamic GL: no
      Using Multithreaded OpenGL: yes
      
      Init Parameters:
        *  application-name quicknanobrowser 
        *  browser-subprocess-path C:\Qt\6.3.1\msvc2019_64\bin\QtWebEngineProcessd.exe 
        *  create-default-gl-context  
        *  disable-es3-gl-context  
        *  disable-features ConsolidatedMovementXY,InstalledApp,BackgroundFetch,WebOTP,WebPayments,WebUSB,PictureInPicture 
        *  disable-speech-api  
        *  enable-features NetworkServiceInProcess,TracingServiceInProcess 
        *  enable-threaded-compositing  
        *  in-process-gpu  
        *  single-process  
        *  use-gl desktop 
      
      [13160:13076:0618/211135.763:FATAL:v8_initializer.cc(95)] V8 error: Entering the V8 API without proper locking in place (HandleScope::HandleScope).
      Backtrace:
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41D61372+236264418]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41C4F10C+235141500]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41C4F0B3+235141411]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41CDEEE1+235730769]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB474780EA+327584090]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB394352FB+92429163]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB393EB3AA+92126234]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB39412112+92285314]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB393DB47D+92060909]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB40F2612B+221342107]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB40E5BF47+220514231]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB40E58D16+220501382]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46B2711C+317815180]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46B18ECB+317757243]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB4735D9BA+326427178]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB47804F98+331307016]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB4780595D+331309517]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB47390530+326634912]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46B0C7A9+317706265]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46AF8F1A+317626250]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46AD7B9D+317490189]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46AF8AB8+317625128]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46B2C706+317837174]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46B2BEFC+317835116]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46B0B40D+317701245]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46B09C21+317695121]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB38B6995D+83206605]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB46AFF067+317651159]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB4335256E+259272158]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB43350BB1+259265569]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB43366468+259353816]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB4335209E+259270926]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB43898AD5+264803141]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB4388E440+264760496]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB4388E9C9+264761913]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB4388EF23+264763283]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB4389D88D+264823037]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB3433634A+7498682]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41C6CAEA+235262810]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41F93170+238565856]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41F8AF99+238532617]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41F8B10C+238532988]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41F8BE83+238536435]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41F97CC3+238585139]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB3433634A+7498682]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41C6CAEA+235262810]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41F9441D+238570637]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41F93A49+238568121]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41BF23F3+234761315]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41F97FF6+238585958]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41E66A43+237335219]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41D0553C+235888044]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41D08384+235899892]
      	QWebEnginePage::setUrlRequestInterceptor [0x00007FFB41C62D42+235222450]
      	BaseThreadInitThunk [0x00007FFBE1DD54E0+16]
      	RtlUserThreadStart [0x00007FFBE378485B+43]
       

      How to test proxy auto-configuration (PAC)

      Create a proxy.pac file with the following content:

      // Dummy Proxy Auto-Configuration (PAC) file that does nothing
      function FindProxyForURL(url, host) {
          return "DIRECT";
      }
      

      Run python -m http.server 8080 --directory <folder>, where <folder> is the folder containing proxy.pac, to start a web server for serving the PAC file to Windows.
      In Windows Settings, configure proxy setup script to http://localhost:8080/proxy.pac

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              michal Michal Klocek
              forderud Fredrik Orderud
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes