tauri-apps/tauri

document that changing additional_browser_args require changing data_directory if multiple webviews will be opened

Elendiar opened this issue · 3 comments

Describe the bug

Applying additional_browser_args, empty or not to any window builder during app_setup.

[2024-09-26][06:10:44][tauri_runtime_wry][ERROR] failed to create webview: WebView2 error: 
WindowsError(Error { code: HRESULT(0x8007139F), message: "The group or resource is not in the correct state to perform the requested operation." })

I create few windows during app setup, main, popover etc, and notice bugged behaviour when additional_browser_args applied to any on them.
For example, if use additional_browser_args("--enable-features=msWebView2EnableDraggableRegions --disable-features=ElasticOverscroll"), or .additional_browser_args("") to main window builder - i get HRESULT(0x8007139F) on any webview create from javascript frontend (ts/react).
But other windows, created from rust frontend works.
If i apply additional_browser_args to my secondary, popover window, webviews creates from js successfully, but interaction with popover webview, created from rust backend causes panic.

Applying additional_browser_args for both, main and popover window cause only failed to create webview: WebView2 error fro js, without panic.

Reproduction

No response

Expected behavior

No response

Full tauri info output

[✔] Environment
    - OS: Windows 10.0.22631 x86_64 (X64)
    ✔ WebView2: 129.0.2792.52
    ✔ MSVC: Visual Studio Community 2022
    ✔ rustc: 1.83.0-nightly (506f22b46 2024-09-19)
    ✔ cargo: 1.83.0-nightly (a9a418d1a 2024-09-15)
    ✔ rustup: 1.27.1 (54dd3d00f 2024-04-24)
    ✔ Rust toolchain: nightly-x86_64-pc-windows-msvc (default)
    - node: 22.8.0
    - npm: 10.8.3

[-] Packages
    - tauri 🦀: 2.0.0-rc.15
    - tauri-build 🦀: 2.0.0-rc.12
    - wry 🦀: 0.43.1
    - tao 🦀: 0.30.0
    - tauri-cli 🦀: 2.0.0-rc.7
    - @tauri-apps/api : 2.0.0-rc.4
    - @tauri-apps/cli : 2.0.0-rc.10

[-] Plugins
    - tauri-plugin-process 🦀: 2.0.0-rc.1
    - @tauri-apps/plugin-process : 2.0.0-rc.1
    - tauri-plugin-notification 🦀: 2.0.0-rc.5
    - @tauri-apps/plugin-notification : not installed!
    - tauri-plugin-shell 🦀: 2.0.0-rc.3
    - @tauri-apps/plugin-shell : 2.0.0-rc.1
    - tauri-plugin-log 🦀: 2.0.0-rc.2
    - @tauri-apps/plugin-log : 2.0.0-rc.1
    - tauri-plugin-store 🦀: 2.0.0-rc.3
    - @tauri-apps/plugin-store : 2.0.0-rc.1
    - tauri-plugin-updater 🦀: 2.0.0-rc.3
    - @tauri-apps/plugin-updater : 2.0.0-rc.1 (outdated, latest: 2.0.0-rc.2)
    - tauri-plugin-autostart 🦀: 2.0.0-rc.1
    - @tauri-apps/plugin-autostart : 2.0.0-rc.1
    - tauri-plugin-single-instance 🦀: 2.0.0-rc.4
    - @tauri-apps/plugin-single-instance : not installed!

[-] App
    - build-type: bundle
    - CSP: unset
    - frontendDist: ../dist
    - devUrl: http://localhost:1420/
    - framework: React
    - bundler: Vite

Stack trace

[2024-09-26][06:20:48][tauri_runtime_wry][ERROR] failed to create webview: WebView2 error: WindowsError(Error { code: HRESULT(0x8007139F), message: "The group or resource is not in the correct state to perform the requested operation." })
[2024-09-26][06:20:57][tao::platform_impl::platform::event_loop::runner][WARN] NewEvents emitted without explicit RedrawEventsCleared
[2024-09-26][06:20:57][tao::platform_impl::platform::event_loop::runner][WARN] RedrawEventsCleared emitted without explicit MainEventsCleared
thread 'main' panicked at src\windows\popover.rs:81:48:
called `Result::unwrap()` on an `Err` value: Runtime(FailedToReceiveMessage)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at core\src\panicking.rs:221:5:
panic in a function that cannot unwind
stack backtrace:
   0:     0x7ff69fd066d1 - std::backtrace_rs::backtrace::dbghelp64::trace
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\..\..\backtrace\src\backtrace\dbghelp64.rs:91
   1:     0x7ff69fd066d1 - std::backtrace_rs::backtrace::trace_unsynchronized
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\..\..\backtrace\src\backtrace\mod.rs:66
   2:     0x7ff69fd066d1 - std::sys::backtrace::_print_fmt
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\sys\backtrace.rs:66
   3:     0x7ff69fd066d1 - std::sys::backtrace::impl$0::print::impl$0::fmt
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\sys\backtrace.rs:39
   4:     0x7ff69fd2cbd9 - core::fmt::rt::Argument::fmt
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/core\src\fmt\rt.rs:177
   5:     0x7ff69fd2cbd9 - core::fmt::write
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/core\src\fmt\mod.rs:1186
   6:     0x7ff69fd012a7 - std::io::Write::write_fmt<std::sys::pal::windows::stdio::Stderr>
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\io\mod.rs:1823
   7:     0x7ff69fd06515 - std::sys::backtrace::BacktraceLock::print
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\sys\backtrace.rs:42
   8:     0x7ff69fd086d9 - std::panicking::default_hook::closure$1
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\panicking.rs:268
   9:     0x7ff69fd0848f - std::panicking::default_hook
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\panicking.rs:295
  10:     0x7ff69fd08d63 - std::panicking::rust_panic_with_hook
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\panicking.rs:801
  11:     0x7ff69fd08bb2 - std::panicking::begin_panic_handler::closure$0
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\panicking.rs:667
  12:     0x7ff69fd0718f - std::sys::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\sys\backtrace.rs:170
  13:     0x7ff69fd087ee - std::panicking::begin_panic_handler
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\panicking.rs:665
  14:     0x7ff69fd4c9d5 - core::panicking::panic_nounwind_fmt::runtime
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/core\src\panicking.rs:112
  15:     0x7ff69fd4c9d5 - core::panicking::panic_nounwind_fmt
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/core\src\panicking.rs:122
  16:     0x7ff69fd4ca83 - core::panicking::panic_nounwind
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/core\src\panicking.rs:221
  17:     0x7ff69fd4cc07 - core::panicking::panic_cannot_unwind
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/core\src\panicking.rs:310
  18:     0x7ff69f718e06 - webview2_com_sys::Microsoft::Web::WebView2::Win32::impl$991::new::Invoke<webview2_com::callback::WebResourceRequestedEventHandler_Impl,-1>
                               at D:\packages\cargo\registry\src\index.crates.io-6f17d22bba15001f\webview2-com-sys-0.33.0\src\Microsoft.rs:39957
  19:     0x7ffc8468f540 - _CxxFrameHandler3
  20:     0x7ffc846833d8 - is_exception_typeof
  21:     0x7ffc94c94a26 - RtlCaptureContext2
  22:     0x7ff69f718dbb - webview2_com_sys::Microsoft::Web::WebView2::Win32::impl$991::new::Invoke<webview2_com::callback::WebResourceRequestedEventHandler_Impl,-1>
                               at D:\packages\cargo\registry\src\index.crates.io-6f17d22bba15001f\webview2-com-sys-0.33.0\src\Microsoft.rs:39970
  23:     0x7ffc1a879e98 - DllGetClassObject
  24:     0x7ffc1a879cef - DllGetClassObject
  25:     0x7ffc1a89189d - DllGetClassObject
  26:     0x7ffc1a8e3d40 - DllCanUnloadNow
  27:     0x7ffc1a8cf970 - DllCanUnloadNow
  28:     0x7ffc1a8d27df - DllCanUnloadNow
  29:     0x7ffc1a8d427d - DllCanUnloadNow
  30:     0x7ffc1a8d41e7 - DllCanUnloadNow
  31:     0x7ffc1a8d40f2 - DllCanUnloadNow
  32:     0x7ffc1aac9391 - GetHandleVerifier
  33:     0x7ffc1aaf8333 - GetHandleVerifier
  34:     0x7ffc1a8d6083 - DllCanUnloadNow
  35:     0x7ffc1aad3e5e - GetHandleVerifier
  36:     0x7ffc1a94508c - DllCanUnloadNow
  37:     0x7ffc1aa82c3a - GetHandleVerifier
  38:     0x7ffc1aa83523 - GetHandleVerifier
  39:     0x7ffc1aa831e3 - GetHandleVerifier
  40:     0x7ffc1aa82de4 - GetHandleVerifier
  41:     0x7ffc1aa82c3a - GetHandleVerifier
  42:     0x7ffc1a9372f5 - DllCanUnloadNow
  43:     0x7ffc1a937770 - DllCanUnloadNow
  44:     0x7ffc1a99a9e9 - DllCanUnloadNow
  45:     0x7ffc1aa811c3 - GetHandleVerifier
  46:     0x7ffc1aa811c3 - GetHandleVerifier
  47:     0x7ffc1aa826ff - GetHandleVerifier
  48:     0x7ffc1aa788c4 - GetHandleVerifier
  49:     0x7ffc1a8c0eae - DllCanUnloadNow
  50:     0x7ffc1a8c0d16 - DllCanUnloadNow
  51:     0x7ffc1a8c057d - DllCanUnloadNow
  52:     0x7ffc1aae500c - GetHandleVerifier
  53:     0x7ffc1aae4efc - GetHandleVerifier
  54:     0x7ffc1aa0989f - DllCanUnloadNow
  55:     0x7ffc933082e1 - DispatchMessageW
  56:     0x7ffc93307da1 - DispatchMessageW
  57:     0x7ff69e7f633f - windows::Win32::UI::WindowsAndMessaging::DispatchMessageW
                               at D:\packages\cargo\registry\src\index.crates.io-6f17d22bba15001f\windows-0.58.0\src\Windows\Win32\UI\WindowsAndMessaging\mod.rs:772
  58:     0x7ff69e30945b - tao::platform_impl::platform::event_loop::EventLoop<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::run_return<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$45::run::closure_env$0<enu
                               at D:\packages\cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.30.0\src\platform_impl\windows\event_loop.rs:259        
  59:     0x7ff69e309adb - tao::platform_impl::platform::event_loop::EventLoop<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::run<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$45::run::closure_env$0<enum2$<tau
                               at D:\packages\cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.30.0\src\platform_impl\windows\event_loop.rs:221        
  60:     0x7ff69e473401 - tao::event_loop::EventLoop<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::run<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$45::run::closure_env$0<enum2$<tauri::EventLoopMessage>,tau
                               at D:\packages\cargo\registry\src\index.crates.io-6f17d22bba15001f\tao-0.30.0\src\event_loop.rs:211
  61:     0x7ff69e80a719 - tauri_runtime_wry::impl$45::run<enum2$<tauri::EventLoopMessage>,tauri::app::impl$16::run::closure_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> >,void (*)(ref$<tauri::app::AppHandle<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > >
                               at D:\packages\cargo\registry\src\index.crates.io-6f17d22bba15001f\tauri-runtime-wry-2.0.0-rc.13\src\lib.rs:2633
  62:     0x7ff69e37e140 - tauri::app::App<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > >::run<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> >,void (*)(ref$<tauri::app::AppHandle<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > > >,enum2$<tauri::app::Run
                               at D:\packages\cargo\registry\src\index.crates.io-6f17d22bba15001f\tauri-2.0.0-rc.15\src\app.rs:1093
  63:     0x7ff69e647f9a - sebn_taskbar_client::core::app::run
                               at D:\mykyta.nehrych\code\sebn\sebn-taskbar-client-next\src-tauri\src\core\app.rs:136
  64:     0x7ff69e6b83ed - sebn_taskbar_client::main
                               at D:\mykyta.nehrych\code\sebn\sebn-taskbar-client-next\src-tauri\src\main.rs:17
  65:     0x7ff69e4bcb8b - core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library\core\src\ops\function.rs:250
  66:     0x7ff69e3f72de - core::hint::black_box
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library\core\src\hint.rs:389
  67:     0x7ff69e3f72de - std::sys::backtrace::__rust_begin_short_backtrace<void (*)(),tuple$<> >
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library\std\src\sys\backtrace.rs:154
  68:     0x7ff69e123b51 - std::rt::lang_start::closure$0<tuple$<> >
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library\std\src\rt.rs:164
  69:     0x7ff69fcfad89 - std::rt::lang_start_internal::closure$2
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\rt.rs:143
  70:     0x7ff69fcfad89 - std::panicking::try::do_call
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\panicking.rs:557
  71:     0x7ff69fcfad89 - std::panicking::try
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\panicking.rs:520
  72:     0x7ff69fcfad89 - std::panic::catch_unwind
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\panic.rs:348
  73:     0x7ff69fcfad89 - std::rt::lang_start_internal
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library/std\src\rt.rs:143
  74:     0x7ff69e123b2a - std::rt::lang_start<tuple$<> >
                               at /rustc/506f22b4663f3e756e1e6a4f66c6309fdc00819c\library\std\src\rt.rs:163
  75:     0x7ff69e6b8459 - main
  76:     0x7ff69fd49cec - invoke_main
                               at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  77:     0x7ff69fd49cec - __scrt_common_main_seh
                               at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  78:     0x7ffc937c257d - BaseThreadInitThunk
  79:     0x7ffc94c4af28 - RtlUserThreadStart
thread caused non-unwinding panic. aborting.

Additional context

No response

i get HRESULT(0x8007139F) on any webview create from javascript frontend (ts/react).
But other windows, created from rust frontend works.

That part doesn't make sense to me tbh. It's not documented properly but every different additional_browser_args config also need a different data_directory config (so as long as the browser args are the same, they can share a directory). If you don't do this you get the "not in the correct state" error.

i get HRESULT(0x8007139F) on any webview create from javascript frontend (ts/react).
But other windows, created from rust frontend works.

That part doesn't make sense to me tbh. It's not documented properly but every different additional_browser_args config also need a different data_directory config (so as long as the browser args are the same, they can share a directory). If you don't do this you get the "not in the correct state" error.

I mean that from frontend webview created without any arguments, there is no such property new WebviewWindow(label, {...}, but if any window with additional_browser_args builded in rust, i get this error.

That is, in order for this error not to occur, you must also specify data_directory when specifying additional_browser_args in rust builder?

That is, in order for this error not to occur, you must also specify data_directory when specifying additional_browser_args in rust builder?

Yes