Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Electron crashes with libnotify 0.8.3 in portal environment when closing notification #40461

Closed
3 tasks done
taoky opened this issue Nov 6, 2023 · 8 comments · Fixed by #41691
Closed
3 tasks done

Comments

@taoky
Copy link
Contributor

taoky commented Nov 6, 2023

Preflight Checklist

Electron Version

25.0.0, 27.0.3 and 28.0.0-beta.2

What operating system are you using?

Other Linux

Operating System Version

  • Arch Linux
  • uname -a: Linux hostname 6.5.7-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 10 Oct 2023 21:10:21 +0000 x86_64 GNU/Linux

What arch are you using?

x64

Last Known Working Electron version

Not sure

Expected Behavior

Electron does not crash when running notification.close().

Actual Behavior

Electron crashes with notification.close() when in portal (flatpak/snap, or NOTIFY_FORCE_PORTAL=1 is set).

Testcase Gist URL

No response

Additional Information

An MRE modified from electron-quick-start: https://github.com/taoky/electron-libnotify-portal-crash-mre.

Screencast:

Kooha-2023-11-07-04-23-16.mp4

My analysis:

  1. LibnotifyNotification::Show() binds "closed" glib signal to LibnotifyNotification::OnNotificationClosed
    signal_ = ScopedGSignal(
    notification_, "closed",
    base::BindRepeating(&LibnotifyNotification::OnNotificationClosed,
    base::Unretained(this)));
  2. When closing (dismissing) notification, LibnotifyNotification::Dismiss() is called which runs libnotify_loader_.notify_notification_close():
    libnotify_loader_.notify_notification_close(notification_, &error);
  3. In notify_notification_close(), as libnotify 0.8.x adds supports for portal environment, it will call remove_portal_notification() instead of using gdbus call (https://gitlab.gnome.org/GNOME/libnotify/-/blob/0.8.3/libnotify/notification.c#L1761), then it calls close_notification() (https://gitlab.gnome.org/GNOME/libnotify/-/blob/0.8.3/libnotify/notification.c#L825), and nightmare happens: it g_signal_emit (notification, signals[SIGNAL_CLOSED], 0); (https://gitlab.gnome.org/GNOME/libnotify/-/blob/0.8.3/libnotify/notification.c#L707).
  4. LibnotifyNotification::OnNotificationClosed() happily calls NotificationDismissed(), which finally calls Destroy(), and then presenter()->RemoveNotification(this), and this is then deleted inside.
  5. Notification::Close() in electron_api_notification.cc has no idea about notification_ being deleted, it continues, and crashes:
    https://github.com/electron/electron/blob/7999ea39e2ee9702e64e4125e8e89c314e9f468f/shell/browser/api/electron_api_notification.cc#L217C6-L227
@taoky taoky added the bug 🪲 label Nov 6, 2023
@taoky taoky changed the title [Bug]: Electron crashes with libnotify 0.8.3 in portal environment [Bug]: Electron crashes with libnotify 0.8.3 in portal environment when closing notification Nov 8, 2023
@taoky
Copy link
Contributor Author

taoky commented Nov 8, 2023

libnotify 0.8.x, before 0.8.3 is affected by another bug: https://gitlab.gnome.org/GNOME/libnotify/-/issues/34.

But libnotify 0.8.3 has fixed its own bug, as I guess it's time for Electron to fix this unexpected LibnotifyNotification::OnNotificationClosed() call inside LibnotifyNotification::Dismiss().

Workaround for app dev: Don't use notification.close() to avoid crash.

@electron-issue-triage
Copy link

This issue has been automatically marked as stale. If this issue is still affecting you, please leave any comment (for example, "bump"), and we'll keep it open. If you have any new additional information—in particular, if this is still reproducible in the latest version of Electron or in the beta—please include it with your comment!

@taoky
Copy link
Contributor Author

taoky commented Feb 7, 2024

I'm sure this bug still exists in electron 28.2.1 and 29.0.0-beta.6.

@Simon-Laux
Copy link

just tested it in 28.2.3, there it is still an issue

@Simon-Laux
Copy link

You can also work around this crash by forcing libnotify to use dbus instead of the portal with the env var NOTIFY_IGNORE_PORTAL=1.

You need to add this to your flatpak build file:

finish-args:
   - --talk-name=org.freedesktop.Notifications
   - --env=NOTIFY_IGNORE_PORTAL=1

example from my project: flathub/chat.delta.desktop@cf25cd0

taoky added a commit to taoky/electron that referenced this issue Mar 25, 2024
Callers of Notification::Dismiss() assume that the notification
instance is not deleted after the call, but this was not the case
for LibnotifyNotification:
- Destroy() would get `this` deleted.
- notify_notification_close() in portal environment triggers
LibnotifyNotification::OnNotificationClosed(), and finally calls
Destroy()

This patch removes all Destroy() in Dismiss(), and adds a boolean
to tell whether notify_notification_close() is running, to avoid crash
under portal environment.

Fixes electron#40461.
codebytere pushed a commit that referenced this issue Mar 27, 2024
Callers of Notification::Dismiss() assume that the notification
instance is not deleted after the call, but this was not the case
for LibnotifyNotification:
- Destroy() would get `this` deleted.
- notify_notification_close() in portal environment triggers
LibnotifyNotification::OnNotificationClosed(), and finally calls
Destroy()

This patch removes all Destroy() in Dismiss(), and adds a boolean
to tell whether notify_notification_close() is running, to avoid crash
under portal environment.

Fixes #40461.
trop bot added a commit that referenced this issue Mar 27, 2024
Callers of Notification::Dismiss() assume that the notification
instance is not deleted after the call, but this was not the case
for LibnotifyNotification:
- Destroy() would get `this` deleted.
- notify_notification_close() in portal environment triggers
LibnotifyNotification::OnNotificationClosed(), and finally calls
Destroy()

This patch removes all Destroy() in Dismiss(), and adds a boolean
to tell whether notify_notification_close() is running, to avoid crash
under portal environment.

Fixes #40461.

Co-authored-by: taoky <me@taoky.moe>
trop bot added a commit that referenced this issue Mar 27, 2024
Callers of Notification::Dismiss() assume that the notification
instance is not deleted after the call, but this was not the case
for LibnotifyNotification:
- Destroy() would get `this` deleted.
- notify_notification_close() in portal environment triggers
LibnotifyNotification::OnNotificationClosed(), and finally calls
Destroy()

This patch removes all Destroy() in Dismiss(), and adds a boolean
to tell whether notify_notification_close() is running, to avoid crash
under portal environment.

Fixes #40461.

Co-authored-by: taoky <me@taoky.moe>
trop bot added a commit that referenced this issue Mar 27, 2024
Callers of Notification::Dismiss() assume that the notification
instance is not deleted after the call, but this was not the case
for LibnotifyNotification:
- Destroy() would get `this` deleted.
- notify_notification_close() in portal environment triggers
LibnotifyNotification::OnNotificationClosed(), and finally calls
Destroy()

This patch removes all Destroy() in Dismiss(), and adds a boolean
to tell whether notify_notification_close() is running, to avoid crash
under portal environment.

Fixes #40461.

Co-authored-by: taoky <me@taoky.moe>
codebytere pushed a commit that referenced this issue Mar 28, 2024
Callers of Notification::Dismiss() assume that the notification
instance is not deleted after the call, but this was not the case
for LibnotifyNotification:
- Destroy() would get `this` deleted.
- notify_notification_close() in portal environment triggers
LibnotifyNotification::OnNotificationClosed(), and finally calls
Destroy()

This patch removes all Destroy() in Dismiss(), and adds a boolean
to tell whether notify_notification_close() is running, to avoid crash
under portal environment.

Fixes #40461.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: taoky <me@taoky.moe>
codebytere pushed a commit that referenced this issue Mar 28, 2024
Callers of Notification::Dismiss() assume that the notification
instance is not deleted after the call, but this was not the case
for LibnotifyNotification:
- Destroy() would get `this` deleted.
- notify_notification_close() in portal environment triggers
LibnotifyNotification::OnNotificationClosed(), and finally calls
Destroy()

This patch removes all Destroy() in Dismiss(), and adds a boolean
to tell whether notify_notification_close() is running, to avoid crash
under portal environment.

Fixes #40461.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: taoky <me@taoky.moe>
ckerr pushed a commit that referenced this issue Mar 29, 2024
Callers of Notification::Dismiss() assume that the notification
instance is not deleted after the call, but this was not the case
for LibnotifyNotification:
- Destroy() would get `this` deleted.
- notify_notification_close() in portal environment triggers
LibnotifyNotification::OnNotificationClosed(), and finally calls
Destroy()

This patch removes all Destroy() in Dismiss(), and adds a boolean
to tell whether notify_notification_close() is running, to avoid crash
under portal environment.

Fixes #40461.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: taoky <me@taoky.moe>
@oalfroukh
Copy link

oalfroukh commented Apr 4, 2024

Hi @taoky
Hope you're doing well!

I'm using electron v28.2.5 on the production version, and the user said the app crashed once tried to minimize the app, here is our code for minimize event (as I see on the app logs the app crashed before accessing the condition that will determine to hide or minimize the app and create the notification):

BrowserWindow.on("minimize", (event) => {
      console.info("minimize event fired");
      BrowserWindow.blur();
      if(// a condition to hide or minimize the app){
      event.preventDefault();
      BrowserWindow.hide();
      if (Notification.isSupported()) {
        const notif = new Notification({
          icon: ImagePath(),
          title: "app title",
          body: "RUN_IN_BACKGROUND"
        });
        notif.show();
      }
      }
});

What's strange, I checked the Senry reports and I see the blow stack trace (std::__Cr::__tree<T>::__erase_unique<T>), and as you see it refers to the notifications and libc++

+0x0339549 std::__Cr::__tree<T>::__erase_unique<T>(C:\projects\src\third_party\libc++\src\include\__tree:2456)
+0x0339407
electron::NotificationPresenter::RemoveNotification (C:\projects\src\electron\shell\browser\notifications\notification_presenter.cc:30)

image

Sentry report! OS Version: Windows 10.0.22621 (3296) Report Version: 104

Crashed Thread: 9112

Application Specific Information:
Fatal Error: EXCEPTION_ACCESS_VIOLATION_READ / 0x10

Thread 9112 Crashed:
0 electron.exe 0x7ff6b3669549 std::__Cr::__tree::__erase_unique (__tree:2456)
1 electron.exe 0x7ff6b3669407 electron::NotificationPresenter::RemoveNotification (notification_presenter.cc:30)
2 electron.exe 0x7ff6b3713762 electron::WindowsToastNotification::ShowInternal (windows_toast_notification.cc:171)
3 electron.exe 0x7ff6b3712a0d electron::WindowsToastNotification::Show (windows_toast_notification.cc:124)
4 electron.exe 0x7ff6b3592e0e electron::api::Notification::Show (electron_api_notification.cc:202)
5 electron.exe 0x7ff6b359490c gin::internal::Dispatcher::DispatchToCallbackImpl (function_template.h:240)
6 electron.exe 0x7ff6b35947a3 gin::internal::Dispatcher::DispatchToCallback (function_template.h:246)
7 electron.exe 0x7ff6b75246c1 Builtins_CallApiCallbackGeneric
8 0x1ce01426829
9 electron.exe 0x7ff6b7522763 Builtins_InterpreterEntryTrampoline

Thread 6964 name: LoaderLockSampler
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b7713327 base::WaitableEvent::Wait (waitable_event.cc:23)
4 electron.exe 0x7ff6b77dfd48 base::MessagePumpDefault::Run (message_pump_default.cc:56)
5 electron.exe 0x7ff6b55ea5a8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run (thread_controller_with_message_pump_impl.cc:626)
6 electron.exe 0x7ff6b4f0fc47 base::RunLoop::Run (run_loop.cc:134)
7 electron.exe 0x7ff6b4ef9ed3 base::Thread::Run (thread.cc:337)
8 electron.exe 0x7ff6b4efa05b base::Thread::ThreadMain (thread.cc:409)
9 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
10 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
11 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 22016 name: BrokerEvent
0 ntdll.dll 0x7ffe9d70f494 NtRemoveIoCompletion
1 KERNELBASE.dll 0x7ffe9af94412 GetQueuedCompletionStatus
2 electron.exe 0x7ff6b564eb5b `anonymous namespace'::TargetEventsThread (broker_services.cc:132)
3 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
4 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 17492 name: ThreadPoolServiceThread
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b77dfd69 base::MessagePumpDefault::Run (message_pump_default.cc:58)
5 electron.exe 0x7ff6b55ea5a8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run (thread_controller_with_message_pump_impl.cc:626)
6 electron.exe 0x7ff6b4f0fc47 base::RunLoop::Run (run_loop.cc:134)
7 electron.exe 0x7ff6b4ef9ed3 base::Thread::Run (thread.cc:337)
8 electron.exe 0x7ff6b5d2f1f7 base::internal::ServiceThread::Run (service_thread.cc:15)
9 electron.exe 0x7ff6b4efa05b base::Thread::ThreadMain (thread.cc:409)
10 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
11 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
12 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 23100 name: ThreadPoolForegroundWorker
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1260 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436527 base::internal::WorkerThread::RunPooledWorker (worker_thread.cc:359)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 4336 name: ThreadPoolBackgroundWorker
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436467 base::internal::WorkerThread::RunBackgroundPooledWorker (worker_thread.cc:364)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 17816 name: ThreadPoolForegroundWorker
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436527 base::internal::WorkerThread::RunPooledWorker (worker_thread.cc:359)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 17912 name: Chrome_IOThread
0 ntdll.dll 0x7ffe9d70f494 NtRemoveIoCompletion
1 KERNELBASE.dll 0x7ffe9af94412 GetQueuedCompletionStatus
2 electron.exe 0x7ff6b7704f40 base::MessagePumpForIO::WaitForWork (message_pump_win.cc:752)
3 electron.exe 0x7ff6b770420a base::MessagePumpForIO::DoRunLoop (message_pump_win.cc:734)
4 electron.exe 0x7ff6b4ee507c base::MessagePumpWin::Run (message_pump_win.cc:78)
5 electron.exe 0x7ff6b55ea5a8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run (thread_controller_with_message_pump_impl.cc:626)
6 electron.exe 0x7ff6b4f0fc47 base::RunLoop::Run (run_loop.cc:134)
7 electron.exe 0x7ff6b4ef9ed3 base::Thread::Run (thread.cc:337)
8 electron.exe 0x7ff6b462662a content::BrowserProcessIOThread::IOThreadRun (browser_process_io_thread.cc:119)
9 electron.exe 0x7ff6b4efa05b base::Thread::ThreadMain (thread.cc:409)
10 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
11 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
12 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 18328 name: MemoryInfra
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b7713327 base::WaitableEvent::Wait (waitable_event.cc:23)
4 electron.exe 0x7ff6b77dfd48 base::MessagePumpDefault::Run (message_pump_default.cc:56)
5 electron.exe 0x7ff6b55ea5a8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run (thread_controller_with_message_pump_impl.cc:626)
6 electron.exe 0x7ff6b4f0fc47 base::RunLoop::Run (run_loop.cc:134)
7 electron.exe 0x7ff6b4ef9ed3 base::Thread::Run (thread.cc:337)
8 electron.exe 0x7ff6b4efa05b base::Thread::ThreadMain (thread.cc:409)
9 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
10 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
11 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 21708
0 ntdll.dll 0x7ffe9d712304 NtRemoveIoCompletionEx
1 KERNELBASE.dll 0x7ffe9b041003 GetQueuedCompletionStatusEx
2 electron.exe 0x7ff6b55ab022 uv_run (core.c:626)
3 electron.exe 0x7ff6b5d112e0 node::WorkerThreadsTaskRunner::DelayedTaskScheduler::Run (node_platform.cc:95)
4 electron.exe 0x7ff6b55a9aa6 uv__thread_start (thread.c:108)
5 electron.exe 0x7ff6b7bdd9d9 thread_start (thread.cpp:97)
6 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
7 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 13592
0 ntdll.dll 0x7ffe9d712f64 ZwWaitForAlertByThreadId
1 ntdll.dll 0x7ffe9d6d8d33 RtlSleepConditionVariableCS
2 KERNELBASE.dll 0x7ffe9afe3188 SleepConditionVariableCS
3 electron.exe 0x7ff6b55a9fbf uv_cond_wait (thread.c:373)
4 electron.exe 0x7ff6b5d0ec1e node::`anonymous namespace'::PlatformWorkerThread (node_platform.cc:42)
5 electron.exe 0x7ff6b55a9aa6 uv__thread_start (thread.c:108)
6 electron.exe 0x7ff6b7bdd9d9 thread_start (thread.cpp:97)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 9308
0 ntdll.dll 0x7ffe9d712f64 ZwWaitForAlertByThreadId
1 ntdll.dll 0x7ffe9d6d8d33 RtlSleepConditionVariableCS
2 KERNELBASE.dll 0x7ffe9afe3188 SleepConditionVariableCS
3 electron.exe 0x7ff6b55a9fbf uv_cond_wait (thread.c:373)
4 electron.exe 0x7ff6b5d0ec1e node::`anonymous namespace'::PlatformWorkerThread (node_platform.cc:42)
5 electron.exe 0x7ff6b55a9aa6 uv__thread_start (thread.c:108)
6 electron.exe 0x7ff6b7bdd9d9 thread_start (thread.cpp:97)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 17272
0 ntdll.dll 0x7ffe9d712f64 ZwWaitForAlertByThreadId
1 ntdll.dll 0x7ffe9d6d8d33 RtlSleepConditionVariableCS
2 KERNELBASE.dll 0x7ffe9afe3188 SleepConditionVariableCS
3 electron.exe 0x7ff6b55a9fbf uv_cond_wait (thread.c:373)
4 electron.exe 0x7ff6b5d0ec1e node::`anonymous namespace'::PlatformWorkerThread (node_platform.cc:42)
5 electron.exe 0x7ff6b55a9aa6 uv__thread_start (thread.c:108)
6 electron.exe 0x7ff6b7bdd9d9 thread_start (thread.cpp:97)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 18824
0 ntdll.dll 0x7ffe9d712f64 ZwWaitForAlertByThreadId
1 ntdll.dll 0x7ffe9d6d8d33 RtlSleepConditionVariableCS
2 KERNELBASE.dll 0x7ffe9afe3188 SleepConditionVariableCS
3 electron.exe 0x7ff6b55a9fbf uv_cond_wait (thread.c:373)
4 electron.exe 0x7ff6b5d1fe40 worker (threadpool.c:76)
5 electron.exe 0x7ff6b55a9aa6 uv__thread_start (thread.c:108)
6 electron.exe 0x7ff6b7bdd9d9 thread_start (thread.cpp:97)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 6140
0 ntdll.dll 0x7ffe9d712f64 ZwWaitForAlertByThreadId
1 ntdll.dll 0x7ffe9d6d8d33 RtlSleepConditionVariableCS
2 KERNELBASE.dll 0x7ffe9afe3188 SleepConditionVariableCS
3 electron.exe 0x7ff6b55a9fbf uv_cond_wait (thread.c:373)
4 electron.exe 0x7ff6b5d1fe40 worker (threadpool.c:76)
5 electron.exe 0x7ff6b55a9aa6 uv__thread_start (thread.c:108)
6 electron.exe 0x7ff6b7bdd9d9 thread_start (thread.cpp:97)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 18052
0 ntdll.dll 0x7ffe9d712f64 ZwWaitForAlertByThreadId
1 ntdll.dll 0x7ffe9d6d8d33 RtlSleepConditionVariableCS
2 KERNELBASE.dll 0x7ffe9afe3188 SleepConditionVariableCS
3 electron.exe 0x7ff6b55a9fbf uv_cond_wait (thread.c:373)
4 electron.exe 0x7ff6b5d1fe40 worker (threadpool.c:76)
5 electron.exe 0x7ff6b55a9aa6 uv__thread_start (thread.c:108)
6 electron.exe 0x7ff6b7bdd9d9 thread_start (thread.cpp:97)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 23316
0 ntdll.dll 0x7ffe9d712f64 ZwWaitForAlertByThreadId
1 ntdll.dll 0x7ffe9d6d8d33 RtlSleepConditionVariableCS
2 KERNELBASE.dll 0x7ffe9afe3188 SleepConditionVariableCS
3 electron.exe 0x7ff6b55a9fbf uv_cond_wait (thread.c:373)
4 electron.exe 0x7ff6b5d1fe40 worker (threadpool.c:76)
5 electron.exe 0x7ff6b55a9aa6 uv__thread_start (thread.c:108)
6 electron.exe 0x7ff6b7bdd9d9 thread_start (thread.cpp:97)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 15200
0 ntdll.dll 0x7ffe9d712fc4 ZwWaitForWorkViaWorkerFactory
1 ntdll.dll 0x7ffe9d6a537d TppWorkerThread
2 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
3 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 21400 name: ThreadPoolSingleThreadCOMSTASharedForeground0
0 win32u.dll 0x7ffe9b32acf4 ZwUserMsgWaitForMultipleObjectsEx
1 electron.exe 0x7ff6b5d3250e base::internal::anonymous namespace'::WorkerThreadCOMDelegate::WaitForWork (pooled_single_thread_task_runner_manager.cc:362) 2 electron.exe 0x7ff6b7aa13eb base::internal::WorkerThread::RunWorker (worker_thread.cc:469) 3 electron.exe 0x7ff6b64365e7 base::internal::WorkerThread::RunSharedCOMWorker (worker_thread.cc:390) 4 electron.exe 0x7ff6b4ede7b3 base::anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
5 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
6 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 11924
0 ntdll.dll 0x7ffe9d70fec4 NtWaitForMultipleObjects
1 KERNELBASE.dll 0x7ffe9afd0478 WaitForMultipleObjectsEx
2 combase.dll 0x7ffe9bc08b5c WaitCoalesced (coalescedwait.cxx:70)
3 combase.dll 0x7ffe9bc089c9 [inlined] ComTraceMessageT (comtrace.h:133)
4 combase.dll 0x7ffe9bc089c9 CROIDTable::WorkerThreadLoop (refcache.cxx:1681)
5 combase.dll 0x7ffe9bc087be [inlined] ComTraceMessageT (comtrace.h:133)
6 combase.dll 0x7ffe9bc087be CRpcThread::WorkerLoop (threads.cxx:279)
7 combase.dll 0x7ffe9bc086b8 CRpcThreadCache::RpcWorkerThreadEntry (threads.cxx:73)
8 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
9 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 10584
0 ntdll.dll 0x7ffe9d712fc4 ZwWaitForWorkViaWorkerFactory
1 ntdll.dll 0x7ffe9d6a537d TppWorkerThread
2 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
3 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 18816
0 ntdll.dll 0x7ffe9d712fc4 ZwWaitForWorkViaWorkerFactory
1 ntdll.dll 0x7ffe9d6a537d TppWorkerThread
2 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
3 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 19804 name: ThreadPoolForegroundWorker
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436527 base::internal::WorkerThread::RunPooledWorker (worker_thread.cc:359)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 22756 name: ThreadPoolForegroundWorker
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436527 base::internal::WorkerThread::RunPooledWorker (worker_thread.cc:359)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 14248 name: CompositorTileWorker1
0 ntdll.dll 0x7ffe9d712f64 ZwWaitForAlertByThreadId
1 ntdll.dll 0x7ffe9d6d91ea RtlSleepConditionVariableSRW
2 KERNELBASE.dll 0x7ffe9afe3248 SleepConditionVariableSRW
3 electron.exe 0x7ff6b4edf8e3 base::ConditionVariable::TimedWait (condition_variable_win.cc:47)
4 electron.exe 0x7ff6b4edf819 base::ConditionVariable::Wait (condition_variable_win.cc:31)
5 electron.exe 0x7ff6b77a019c cc::SingleThreadTaskGraphRunner::Run (single_thread_task_graph_runner.cc:132)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 23084 name: Chrome_InProcGpuThread
0 win32u.dll 0x7ffe9b32acf4 ZwUserMsgWaitForMultipleObjectsEx
1 electron.exe 0x7ff6b77028ef base::MessagePumpForUI::WaitForWork (message_pump_win.cc:262)
2 electron.exe 0x7ff6b7702515 base::MessagePumpForUI::DoRunLoop (message_pump_win.cc:240)
3 electron.exe 0x7ff6b4ee507c base::MessagePumpWin::Run (message_pump_win.cc:78)
4 electron.exe 0x7ff6b55ea5a8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run (thread_controller_with_message_pump_impl.cc:626)
5 electron.exe 0x7ff6b4f0fc47 base::RunLoop::Run (run_loop.cc:134)
6 electron.exe 0x7ff6b4ef9ed3 base::Thread::Run (thread.cc:337)
7 electron.exe 0x7ff6b4efa05b base::Thread::ThreadMain (thread.cc:409)
8 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
9 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
10 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 9240 name: Chrome_ChildIOThread
0 ntdll.dll 0x7ffe9d70f494 NtRemoveIoCompletion
1 KERNELBASE.dll 0x7ffe9af94412 GetQueuedCompletionStatus
2 electron.exe 0x7ff6b7704f40 base::MessagePumpForIO::WaitForWork (message_pump_win.cc:752)
3 electron.exe 0x7ff6b770420a base::MessagePumpForIO::DoRunLoop (message_pump_win.cc:734)
4 electron.exe 0x7ff6b4ee507c base::MessagePumpWin::Run (message_pump_win.cc:78)
5 electron.exe 0x7ff6b55ea5a8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run (thread_controller_with_message_pump_impl.cc:626)
6 electron.exe 0x7ff6b4f0fc47 base::RunLoop::Run (run_loop.cc:134)
7 electron.exe 0x7ff6b4ef9ed3 base::Thread::Run (thread.cc:337)
8 electron.exe 0x7ff6b530f6ca content::anonymous namespace'::ChildIOThread::Run (child_process.cc:58) 9 electron.exe 0x7ff6b4efa05b base::Thread::ThreadMain (thread.cc:409) 10 electron.exe 0x7ff6b4ede7b3 base::anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
11 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
12 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 22344 name: VizCompositorThread
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b77dfd69 base::MessagePumpDefault::Run (message_pump_default.cc:58)
5 electron.exe 0x7ff6b55ea5a8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run (thread_controller_with_message_pump_impl.cc:626)
6 electron.exe 0x7ff6b4f0fc47 base::RunLoop::Run (run_loop.cc:134)
7 electron.exe 0x7ff6b4ef9ed3 base::Thread::Run (thread.cc:337)
8 electron.exe 0x7ff6b4efa05b base::Thread::ThreadMain (thread.cc:409)
9 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
10 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
11 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 9608 name: VideoCaptureThread
0 win32u.dll 0x7ffe9b32acf4 ZwUserMsgWaitForMultipleObjectsEx
1 electron.exe 0x7ff6b77028ef base::MessagePumpForUI::WaitForWork (message_pump_win.cc:262)
2 electron.exe 0x7ff6b7702515 base::MessagePumpForUI::DoRunLoop (message_pump_win.cc:240)
3 electron.exe 0x7ff6b4ee507c base::MessagePumpWin::Run (message_pump_win.cc:78)
4 electron.exe 0x7ff6b55ea5a8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run (thread_controller_with_message_pump_impl.cc:626)
5 electron.exe 0x7ff6b4f0fc47 base::RunLoop::Run (run_loop.cc:134)
6 electron.exe 0x7ff6b4ef9ed3 base::Thread::Run (thread.cc:337)
7 electron.exe 0x7ff6b4efa05b base::Thread::ThreadMain (thread.cc:409)
8 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
9 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
10 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 4220
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b55a9f21 uv_sem_wait (thread.c:331)
3 electron.exe 0x7ff6b36def81 electron::NodeBindings::EmbedThreadRunner (node_bindings.cc:905)
4 electron.exe 0x7ff6b55a9aa6 uv__thread_start (thread.c:108)
5 electron.exe 0x7ff6b7bdd9d9 thread_start (thread.cpp:97)
6 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
7 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 17676 name: ThreadPoolSingleThreadCOMSTASharedForegroundBlocking1
0 win32u.dll 0x7ffe9b32acf4 ZwUserMsgWaitForMultipleObjectsEx
1 electron.exe 0x7ff6b5d3250e base::internal::anonymous namespace'::WorkerThreadCOMDelegate::WaitForWork (pooled_single_thread_task_runner_manager.cc:362) 2 electron.exe 0x7ff6b7aa13eb base::internal::WorkerThread::RunWorker (worker_thread.cc:469) 3 electron.exe 0x7ff6b64365e7 base::internal::WorkerThread::RunSharedCOMWorker (worker_thread.cc:390) 4 electron.exe 0x7ff6b4ede7b3 base::anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
5 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
6 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 18088 name: ThreadPoolSingleThreadForegroundBlocking2
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b64365a7 base::internal::WorkerThread::RunDedicatedWorker (worker_thread.cc:379)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 22496 name: ThreadPoolForegroundWorker
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436527 base::internal::WorkerThread::RunPooledWorker (worker_thread.cc:359)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 1856 name: ThreadPoolSingleThreadSharedForeground3
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436567 base::internal::WorkerThread::RunSharedWorker (worker_thread.cc:369)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 20984 name: ThreadPoolForegroundWorker
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436527 base::internal::WorkerThread::RunPooledWorker (worker_thread.cc:359)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 12728 name: ThreadPoolForegroundWorker
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436527 base::internal::WorkerThread::RunPooledWorker (worker_thread.cc:359)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 16608 name: CacheThread_BlockFile
0 ntdll.dll 0x7ffe9d70f494 NtRemoveIoCompletion
1 KERNELBASE.dll 0x7ffe9af94412 GetQueuedCompletionStatus
2 electron.exe 0x7ff6b7704f40 base::MessagePumpForIO::WaitForWork (message_pump_win.cc:752)
3 electron.exe 0x7ff6b770420a base::MessagePumpForIO::DoRunLoop (message_pump_win.cc:734)
4 electron.exe 0x7ff6b4ee507c base::MessagePumpWin::Run (message_pump_win.cc:78)
5 electron.exe 0x7ff6b55ea5a8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run (thread_controller_with_message_pump_impl.cc:626)
6 electron.exe 0x7ff6b4f0fc47 base::RunLoop::Run (run_loop.cc:134)
7 electron.exe 0x7ff6b4ef9ed3 base::Thread::Run (thread.cc:337)
8 electron.exe 0x7ff6b4efa05b base::Thread::ThreadMain (thread.cc:409)
9 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
10 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
11 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 17968 name: DManip Delegate Thread
0 win32u.dll 0x7ffe9b32acf4 ZwUserMsgWaitForMultipleObjectsEx
1 USER32.dll 0x7ffe9c7f52f6 MsgWaitForMultipleObjects
2 directmanipulation.dll 0x7ffe8baad7df CManagerImpl::_RunDelegateThread
3 directmanipulation.dll 0x7ffe8baad605 CManagerImpl::_DelegateThreadProc
4 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
5 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 17436
0 ntdll.dll 0x7ffe9d712fc4 ZwWaitForWorkViaWorkerFactory
1 ntdll.dll 0x7ffe9d6a537d TppWorkerThread
2 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
3 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 15132 name: ThreadPoolBackgroundWorker
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b7aa1515 base::internal::WorkerThread::RunWorker (worker_thread.cc:469)
5 electron.exe 0x7ff6b6436467 base::internal::WorkerThread::RunBackgroundPooledWorker (worker_thread.cc:364)
6 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
7 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
8 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 18508 name: ThreadPoolSingleThreadSharedBackgroundBlocking4
0 ntdll.dll 0x7ffe9d70f3f4 NtWaitForSingleObject
1 KERNELBASE.dll 0x7ffe9afa497d WaitForSingleObjectEx
2 electron.exe 0x7ff6b7701962 base::WaitableEvent::TimedWaitImpl (waitable_event_win.cc:74)
3 electron.exe 0x7ff6b771351f base::WaitableEvent::TimedWait (waitable_event.cc:39)
4 electron.exe 0x7ff6b6436019 base::internal::WorkerThread::Delegate::WaitForWork (worker_thread.cc:130)
5 electron.exe 0x7ff6b7aa0d57 base::internal::WorkerThread::RunWorker (worker_thread.cc:438)
6 electron.exe 0x7ff6b64364a7 base::internal::WorkerThread::RunBackgroundSharedWorker (worker_thread.cc:374)
7 electron.exe 0x7ff6b4ede7b3 base::`anonymous namespace'::ThreadFunc (platform_thread_win.cc:140)
8 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
9 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 16240
0 ntdll.dll 0x7ffe9d70fec4 NtWaitForMultipleObjects
1 KERNELBASE.dll 0x7ffe9afd0478 WaitForMultipleObjectsEx
2 MsSpellCheckingFacility.dll 0x7ffe8aad381f Windows::Globalization::Spelling::WatcherThread::EventLoop
3 MsSpellCheckingFacility.dll 0x7ffe8aad3939 Windows::Globalization::Spelling::WatcherThread::WatcherThreadProc
4 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
5 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Thread 21040
0 ntdll.dll 0x7ffe9d70fec4 NtWaitForMultipleObjects
1 KERNELBASE.dll 0x7ffe9afd0478 WaitForMultipleObjectsEx
2 combase.dll 0x7ffe9bc08b5c WaitCoalesced (coalescedwait.cxx:70)
3 combase.dll 0x7ffe9bc08889 CRpcThread::WorkerLoop (threads.cxx:327)
4 combase.dll 0x7ffe9bc086b8 CRpcThreadCache::RpcWorkerThreadEntry (threads.cxx:73)
5 KERNEL32.DLL 0x7ffe9c43257c BaseThreadInitThunk
6 ntdll.dll 0x7ffe9d6caa57 RtlUserThreadStart

Is the above stack trace related to #40461 and upgrading electron to v28.2.10 will fix the issue?

Thanks in advance!

@taoky
Copy link
Contributor Author

taoky commented Apr 4, 2024

OS Version: Windows 10.0.22621 (3296) Report Version: 104

Is the above stack trace related to #40461 and upgrading electron to v28.2.10 will fix the issue?

Thanks in advance!

I'm afraid that the fix (#41691) won't help in your case, as libnotify is only used in Linux.

@oalfroukh
Copy link

Hi @taoky

You're right, it's another issue!

I'm able to reproduce the issue on my machine (unfortunately, couldn't create an election Fiddle app that reproduces the issue to open a new issue on GitHub to electron team).

BrowserWindow.on("minimize", (event) => {
      console.info("minimize event fired");
      BrowserWindow.blur();
      event.preventDefault();
      BrowserWindow.hide();
      if (Notification.isSupported()) {
        const notif = new Notification({
          icon: ImagePath(),
          title: "app title",
          body: "RUN_IN_BACKGROUND"
        });
        notif.show();
      }
});

but basically, the scenario to reproduce the crash on my app is as below:

  • the above code is used on the app.
  • if we killed the app from the task manager or restart the PC (it will kill all processes including the utilities) or if the utility process (network and audio) is killed/crashed for a reason (to be honest I don't know what's the reason of kill crash these processes).
  • start the app again and after that click on Win + D to show the desktop and minimize the all apps.
  • the main process of the app will crash once trying to create the Notification.

I found a workaround to avoid that crash by creating the notification inside setTimeout as below. I don't understand the logic of the workaround and how it's worked 🤐

setTimeout(() => {
          if (Notification.isSupported()) {
           const notif = new Notification({
              icon: ImagePath(),
              title: "app title",
              body: "RUN_IN_BACKGROUND"
        });
           notif.show();
      }
}, 500);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Status: 👍 Does Not Block Stable
Development

Successfully merging a pull request may close this issue.

4 participants