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]: WebContents.print hard-crashes Electron #34358

Closed
3 tasks done
pushkin- opened this issue May 26, 2022 · 7 comments
Closed
3 tasks done

[Bug]: WebContents.print hard-crashes Electron #34358

pushkin- opened this issue May 26, 2022 · 7 comments
Assignees
Labels
19-x-y bug 🪲 has-repro-gist Issue can be reproduced with code at https://gist.github.com/ platform/all status/confirmed A maintainer reproduced the bug or agreed with the feature

Comments

@pushkin-
Copy link

Preflight Checklist

Electron Version

19.0.0

What operating system are you using?

Windows

Operating System Version

Windows 10

What arch are you using?

x64

Last Known Working Electron version

18.3.0

Expected Behavior

I expect to be able to print WebContents

Actual Behavior

webContents.print(...) hardcrashes Electron

Testcase Gist URL

https://gist.github.com/847d0c25faca838884ef0c574032028d

Additional Information

  1. start app
  2. it'll try to print after loading the page, but will hardcrash with exit code: 2147483651
@pushkin-
Copy link
Author

maybe related to this PR?

@codebytere codebytere self-assigned this May 26, 2022
@codebytere
Copy link
Member

Urgh i might have missed something on Windows - i'll look ASAP.

@VerteDinde VerteDinde added platform/windows status/confirmed A maintainer reproduced the bug or agreed with the feature has-repro-gist Issue can be reproduced with code at https://gist.github.com/ 19-x-y labels May 27, 2022
@inukshuk
Copy link
Contributor

I don't think this is specific to Windows: it crashes for me on Linux and macOS as well.

@bjbk
Copy link

bjbk commented May 27, 2022

Constant crashing yes. Confirmed on macOS Arm
Downgrading to 18.3.1 restores print dialog

@codebytere
Copy link
Member

codebytere commented May 28, 2022

Looks like it's actually crashing related to #33626 - it's dying on this line

Stacktrace
[88936:0528/150329.299361:FATAL:resource_bundle.cc(1168)] Check failed: !data.empty(). Unable to find resource: 6924. If this happens in a browser test running on Windows, it may be that dead-code elimination stripped out the code that uses the resource, causing the resource to be stripped out because the resource is not used by chrome.dll. See https://crbug.com/1181150.
0   Electron Framework                  0x0000000136f1c269 base::debug::CollectStackTrace(void**, unsigned long) + 9
1   Electron Framework                  0x0000000136e3d573 base::debug::StackTrace::StackTrace() + 19
2   Electron Framework                  0x0000000136e5696f logging::LogMessage::~LogMessage() + 175
3   Electron Framework                  0x000000013276512e partition_alloc::internal::LoggerWithAllowedAllocations::~LoggerWithAllowedAllocations() + 14
4   Electron Framework                  0x000000013838d9e6 ui::ResourceBundle::GetLocalizedStringImpl(int) const + 806
5   Electron Framework                  0x000000013838d695 ui::ResourceBundle::GetLocalizedString(int) + 325
6   Electron Framework                  0x0000000138380e28 l10n_util::GetStringUTF16(int) + 56
7   Electron Framework                  0x0000000132470090 electron::ElectronContentClient::GetLocalizedString(int) + 16
8   Electron Framework                  0x000000013661fe96 content::ServiceProcessHost::Options::WithDisplayName(int) + 38
9   Electron Framework                  0x000000013bc69cbc mojo::Remote<printing::mojom::PrintBackendService>& printing::PrintBackendServiceManager::GetServiceFromBundle<printing::mojom::SandboxedPrintBackendHost>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, printing::PrintBackendServiceManager::ClientType, bool, base::flat_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<printing::PrintBackendServiceManager::RemotesBundle<printing::mojom::SandboxedPrintBackendHost>, std::__1::default_delete<printing::PrintBackendServiceManager::RemotesBundle<printing::mojom::SandboxedPrintBackendHost> > >, std::__1::less<void>, std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<printing::PrintBackendServiceManager::RemotesBundle<printing::mojom::SandboxedPrintBackendHost>, std::__1::default_delete<printing::PrintBackendServiceManager::RemotesBundle<printing::mojom::SandboxedPrintBackendHost> > > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<printing::PrintBackendServiceManager::RemotesBundle<printing::mojom::SandboxedPrintBackendHost>, std::__1::default_delete<printing::PrintBackendServiceManager::RemotesBundle<printing::mojom::SandboxedPrintBackendHost> > > > > > >&) + 668
10  Electron Framework                  0x000000013bc696f2 printing::PrintBackendServiceManager::GetService(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, printing::PrintBackendServiceManager::ClientType, bool*) + 418
11  Electron Framework                  0x000000013bc67781 printing::PrintBackendServiceManager::RegisterClient(printing::PrintBackendServiceManager::ClientType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 529
12  Electron Framework                  0x000000013bc677dd printing::PrintBackendServiceManager::RegisterQueryWithUiClient() + 29
13  Electron Framework                  0x000000013bc5b1ad printing::PrintViewManagerBase::RegisterSystemPrintClient() + 237
14  Electron Framework                  0x000000013bc5afeb printing::PrintViewManagerBase::PrintNow(content::RenderFrameHost*, bool, base::Value::Dict, base::OnceCallback<void (bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>) + 219
15  Electron Framework                  0x000000013252781b electron::api::WebContents::OnGetDefaultPrinter(base::Value::Dict, base::OnceCallback<void (bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> >, bool, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >) + 1739
16  Electron Framework                  0x0000000132539923 void base::internal::FunctorTraits<void (electron::api::WebContents::*)(base::Value::Dict, base::OnceCallback<void (bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> >, bool, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >), void>::Invoke<void (electron::api::WebContents::*)(base::Value::Dict, base::OnceCallback<void (bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> >, bool, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >), base::WeakPtr<electron::api::WebContents>, base::Value::Dict, base::OnceCallback<void (bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> >, bool, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > > >(void (electron::api::WebContents::*)(base::Value::Dict, base::OnceCallback<void (bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> >, bool, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >), base::WeakPtr<electron::api::WebContents>&&, base::Value::Dict&&, base::OnceCallback<void (bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>&&, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> >&&, bool&&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >&&) + 291
17  Electron Framework                  0x000000013253972a base::internal::Invoker<base::internal::BindState<void (electron::api::WebContents::*)(base::Value::Dict, base::OnceCallback<void (bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> >, bool, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >), base::WeakPtr<electron::api::WebContents>, base::Value::Dict, base::OnceCallback<void (bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> >, bool>, void (std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>,
std::__1::allocator<char16_t> > >)>::RunOnce(base::internal::BindStateBase*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >&&) + 74
18  Electron Framework                  0x0000000132539ee2 void base::internal::ReplyAdapter<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > > >(base::OnceCallback<void (std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >)>, std::__1::unique_ptr<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > >, std::__1::default_delete<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char16_t, std::__1::char_traits<char16_t>, std::__1::allocator<char16_t> > > > >*) + 210
19  Electron Framework                  0x00000001324afd27 base::internal::Invoker<base::internal::BindState<void (*)(base::OnceCallback<(anonymous namespace)::CloseFileResult ()>, std::__1::unique_ptr<(anonymous namespace)::CloseFileResult, std::__1::default_delete<(anonymous namespace)::CloseFileResult> >*), base::OnceCallback<(anonymous namespace)::CloseFileResult ()>, base::internal::UnretainedWrapper<std::__1::unique_ptr<(anonymous namespace)::CloseFileResult, std::__1::default_delete<(anonymous namespace)::CloseFileResult> > > >, void ()>::RunOnce(base::internal::BindStateBase*) + 39
20  Electron Framework                  0x0000000136efddf3 base::(anonymous namespace)::PostTaskAndReplyRelay::RunReply(base::(anonymous namespace)::PostTaskAndReplyRelay) + 211
21  Electron Framework                  0x0000000136efde89 base::internal::Invoker<base::internal::BindState<void (*)(base::(anonymous namespace)::PostTaskAndReplyRelay), base::(anonymous namespace)::PostTaskAndReplyRelay>, void ()>::RunOnce(base::internal::BindStateBase*) + 73
22  Electron Framework                  0x0000000136eb0169 base::TaskAnnotator::RunTaskImpl(base::PendingTask&) + 313
23  Electron Framework                  0x0000000136ed8575 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::sequence_manager::LazyNow*) + 1045
24  Electron Framework                  0x0000000136ed7c4e base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() + 126
25  Electron Framework                  0x0000000136ed8d72 non-virtual thunk to base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() + 18
26  Electron Framework                  0x0000000136f31e03 base::MessagePumpCFRunLoopBase::RunWork() + 83
27  Electron Framework                  0x0000000136f31122 base::mac::CallWithEHFrame(void () block_pointer) + 10
28  Electron Framework                  0x0000000136f3183f base::MessagePumpCFRunLoopBase::RunWorkSource(void*) + 63
29  CoreFoundation                      0x00007ff80b673aeb __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
30  CoreFoundation                      0x00007ff80b673a53 __CFRunLoopDoSource0 + 180
31  CoreFoundation                      0x00007ff80b6737cd __CFRunLoopDoSources0 + 242
32  CoreFoundation                      0x00007ff80b6721e8 __CFRunLoopRun + 892
33  CoreFoundation                      0x00007ff80b6717ac CFRunLoopRunSpecific + 562
34  HIToolbox                           0x00007ff8142f8ce6 RunCurrentEventLoopInMode + 292
35  HIToolbox                           0x00007ff8142f8a4a ReceiveNextEventCommon + 594
36  HIToolbox                           0x00007ff8142f87e5 _BlockUntilNextEventMatchingListInModeWithFilter + 70
37  AppKit                              0x00007ff80e09853d _DPSNextEvent + 927
38  AppKit                              0x00007ff80e096bfa -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1394
39  AppKit                              0x00007ff80e0892a9 -[NSApplication run] + 586
40  Electron Framework                  0x0000000136f3281c base::MessagePumpNSApplication::DoRun(base::MessagePump::Delegate*) + 348
41  Electron Framework                  0x0000000136f311b2 base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) + 130
42  Electron Framework                  0x0000000136ed9319 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool, base::TimeDelta) + 681
43  Electron Framework                  0x0000000136e8b976 base::RunLoop::Run(base::Location const&) + 726
44  Electron Framework                  0x0000000135a68603 content::BrowserMainLoop::RunMainMessageLoop() + 243
45  Electron Framework                  0x0000000135a6a1b2 content::BrowserMainRunnerImpl::Run() + 82
46  Electron Framework                  0x0000000135a658be content::BrowserMain(content::MainFunctionParams) + 270
47  Electron Framework                  0x00000001328b9f52 content::RunBrowserProcessMain(content::MainFunctionParams, content::ContentMainDelegate*) + 258
48  Electron Framework                  0x00000001328bb4d2 content::ContentMainRunnerImpl::RunBrowser(content::MainFunctionParams, bool) + 1410
49  Electron Framework                  0x00000001328baed0 content::ContentMainRunnerImpl::Run() + 736
50  Electron Framework                  0x00000001328b9873 content::RunContentProcess(content::ContentMainParams, content::ContentMainRunner*) + 2723
51  Electron Framework                  0x00000001328b998c content::ContentMain(content::ContentMainParams) + 92
52  Electron Framework                  0x000000013246f8bd ElectronMain + 157
53  dyld                                0x000000011d0ba51e start + 462
Task trace:
0   Electron Framework                  0x000000013252839c electron::api::WebContents::Print(gin::Arguments*) + 2812
1   Electron Framework                  0x000000013252839c electron::api::WebContents::Print(gin::Arguments*) + 2812
2   Electron Framework                  0x0000000137574d52 IPC::(anonymous namespace)::ChannelAssociatedGroupController::Accept(mojo::Message*) + 770
3   Electron Framework                  0x000000013728fabc mojo::SimpleWatcher::Context::Notify(unsigned int, MojoHandleSignalsState, unsigned int) + 428
Crash keys:
  "ui_scheduler_async_stack" = "0x13252839C 0x13252839C"
  "io_scheduler_async_stack" = "0x13728FABC 0x0"
  "platform" = "darwin"
  "process_type" = "browser"

I tried to fix this in #33634, but it was superseded by #33626, so this fell through the cracks.

@codebytere
Copy link
Member

Closed in #34369

@bjbk
Copy link

bjbk commented Jun 2, 2022

19.0.2 seems to fix it! Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
19-x-y bug 🪲 has-repro-gist Issue can be reproduced with code at https://gist.github.com/ platform/all status/confirmed A maintainer reproduced the bug or agreed with the feature
Projects
No open projects
Status: Fixed for Next Release
Development

No branches or pull requests

5 participants