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: breakpad symbols appear to be broken on Windows #19475

Closed
3 tasks done
alexeykuzmin opened this issue Jul 26, 2019 · 4 comments · Fixed by #19483
Closed
3 tasks done

bug: breakpad symbols appear to be broken on Windows #19475

alexeykuzmin opened this issue Jul 26, 2019 · 4 comments · Fixed by #19483
Labels

Comments

@alexeykuzmin
Copy link
Contributor

alexeykuzmin commented Jul 26, 2019

Preflight Checklist

  • I have read the Contributing Guidelines for this project.
  • I agree to follow the Code of Conduct that this project adheres to.
  • I have searched the issue tracker for an issue that matches the one I want to file, without success.

Issue Details

  • Electron Version: 5.0.7
  • Operating System: All
  • Last Known Working Electron version: 3.x.y

Expected Behavior

Breakpad symbols can be used to symbolicate crashes.

Actual Behavior

Crash information on Windows is barely useful.
Here are first lines of symbolicated crashes on different platforms from App Center.

Linux 🎉

Electron 3

skypeforlinux + 0x1bf0

Electron 5.0.7

skypeforlinux!(anonymous namespace)::AtlasOp::~AtlasOp() [GrCCPerFlushResources.cpp : 29 + 0x0]

Mac 👍 😞

Electron 3

Electron Framework!atom::AtomBindings::Crash()

Electron 5.0.7

Electron Framework!<name omitted> [atom_bindings.cc : 201 + 0x0]

Windows 😢

Electron 3

0  Skype.exe!base::FilePath::Append(base::BasicStringPiece<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > >) [file_path.cc : 489 + 0x0]

Electron 5.0.7

0  Skype.exe + 0x7c20

To Reproduce

Set up a crash reporter and run process.crash().

Additional Information

Probably related to #19157, /cc @nornagon.

@alexeykuzmin alexeykuzmin added bug/regression ↩️ A new version of Electron broke something 5-0-x labels Jul 26, 2019
@nornagon
Copy link
Member

nornagon commented Jul 26, 2019

I can't reproduce this. Here's what I did:

  1. Set up a Fiddle which sets up crashReporter then calls process.crash() in the renderer.
  2. Run the above.
  3. Look in the system temp directory for the minidump (in my case, the crash was here: /var/folders/7w/g8kll6857_740r2sgt4prqkr0000gp/T/madly-meat-shape Crashes/completed/0bce9d0d-c97d-42e7-af67-1920282b3412.dmp)
  4. Run electron-minidump on the above file like so:
$ npx electron-minidump --version 5.0.7 --file /path/to/crash.dmp --platform darwin

Here's the stack that minidump_stackwalk produced:

Thread 0 (crashed)
 0  Electron Framework!<name omitted> [atom_bindings.cc : 150 + 0x0]
    rax = 0x00007fa644e0af90   rdx = 0x0000000000000000
    rcx = 0x00007fa654e26030   rbx = 0x00007ffeea296920
    rsi = 0x00007fa638000000   rdi = 0x00007fa654e26030
    rbp = 0x00007ffeea296910   rsp = 0x00007ffeea296910
     r8 = 0x0000004c220004d1    r9 = 0x0000004cd6b852f1
    r10 = 0x00007fa638009c10   r11 = 0x0000004c22004d21
    r12 = 0x00007ffeea2969d0   r13 = 0x00007ffeea296a50
    r14 = 0x00007ffeea296930   r15 = 0x00007ffeea296948
    rip = 0x000000010a529444
    Found by: given as instruction pointer in context
 1  Electron Framework!mate::internal::Dispatcher<void ()>::DispatchToCallback(v8::FunctionCallbackInfo<v8::Value> const&) [callback.h : 129 + 0x3]
    rbp = 0x00007ffeea296970   rsp = 0x00007ffeea296920
    rip = 0x000000010a55b50e
    Found by: previous frame's frame pointer
 2  Electron Framework!v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) [api-arguments-inl.h : 146 + 0x6]
    rbp = 0x00007ffeea296a20   rsp = 0x00007ffeea296980
    rip = 0x00000001096e1baf
    Found by: previous frame's frame pointer
 3  Electron Framework!v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) [builtins-api.cc : 109 + 0x5]
    rbp = 0x00007ffeea296ad0   rsp = 0x00007ffeea296a30
    rip = 0x00000001096a000e
    Found by: previous frame's frame pointer
 4  Electron Framework!v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) [builtins-api.cc : 139 + 0x21]
    rbp = 0x00007ffeea296b50   rsp = 0x00007ffeea296ae0
    rip = 0x000000010969f48a
    Found by: previous frame's frame pointer
 5  Electron Framework!Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit + 0x4b
    rbp = 0x00007ffeea296b78   rsp = 0x00007ffeea296b60
    rip = 0x0000000109f6418b
    Found by: previous frame's frame pointer
 6  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea296be0   rsp = 0x00007ffeea296b88
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
 7  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea296c88   rsp = 0x00007ffeea296bf0
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
 8  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea296db8   rsp = 0x00007ffeea296c98
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
 9  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea296e28   rsp = 0x00007ffeea296dc8
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
10  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea296ec8   rsp = 0x00007ffeea296e38
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
11  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea296f30   rsp = 0x00007ffeea296ed8
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
12  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea296fc0   rsp = 0x00007ffeea296f40
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
13  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea297050   rsp = 0x00007ffeea296fd0
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
14  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea2970a0   rsp = 0x00007ffeea297060
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
15  Electron Framework!Builtins_InterpreterEntryTrampoline + 0x2b7
    rbp = 0x00007ffeea297100   rsp = 0x00007ffeea2970b0
    rip = 0x0000000109ec4237
    Found by: previous frame's frame pointer
16  Electron Framework!Builtins_JSEntryTrampoline + 0x60
    rbp = 0x00007ffeea297128   rsp = 0x00007ffeea297110
    rip = 0x0000000109ec1ae0
    Found by: previous frame's frame pointer
17  Electron Framework!Builtins_JSEntry + 0x8d
    rbp = 0x00007ffeea297190   rsp = 0x00007ffeea297138
    rip = 0x0000000109ec186d
    Found by: previous frame's frame pointer
18  Electron Framework!v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [simulator.h : 138 + 0x5]
    rbp = 0x00007ffeea297260   rsp = 0x00007ffeea2971a0
    rip = 0x00000001099ce9cb
    Found by: previous frame's frame pointer
19  Electron Framework!v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) [execution.cc : 358 + 0x8]
    rbp = 0x00007ffeea2972e0   rsp = 0x00007ffeea297270
    rip = 0x00000001099ce70b
    Found by: previous frame's frame pointer
20  Electron Framework!v8::Script::Run(v8::Local<v8::Context>) [api.cc : 2139 + 0x10]
    rbp = 0x00007ffeea297400   rsp = 0x00007ffeea2972f0
    rip = 0x0000000109524c5a
    Found by: previous frame's frame pointer
21  Electron Framework!blink::V8ScriptRunner::RunCompiledScript(v8::Isolate*, v8::Local<v8::Script>, blink::ExecutionContext*) [v8_script_runner.cc : 288 + 0xb]
    rbp = 0x00007ffeea2974f0   rsp = 0x00007ffeea297410
    rip = 0x000000010bed65db
    Found by: previous frame's frame pointer
22  Electron Framework!blink::ScriptController::ExecuteScriptAndReturnValue(v8::Local<v8::Context>, blink::ScriptSourceCode const&, blink::KURL const&, blink::SanitizeScriptErrors, blink::ScriptFetchOptions const&) [script_controller.cc : 131 + 0xb]
    rbp = 0x00007ffeea297680   rsp = 0x00007ffeea297500
    rip = 0x000000010beae200
    Found by: previous frame's frame pointer
23  Electron Framework!blink::ScriptController::EvaluateScriptInMainWorld(blink::ScriptSourceCode const&, blink::KURL const&, blink::SanitizeScriptErrors, blink::ScriptFetchOptions const&, blink::ScriptController::ExecuteScriptPolicy) [script_controller.cc : 334 + 0x15]
    rbp = 0x00007ffeea297700   rsp = 0x00007ffeea297690
    rip = 0x000000010beaebad
    Found by: previous frame's frame pointer
24  Electron Framework!blink::ScriptController::ExecuteScriptInMainWorld(blink::ScriptSourceCode const&, blink::KURL const&, blink::SanitizeScriptErrors, blink::ScriptFetchOptions const&) [script_controller.cc : 298 + 0x1a]
    rbp = 0x00007ffeea297750   rsp = 0x00007ffeea297710
    rip = 0x000000010beaed5a
    Found by: previous frame's frame pointer
25  Electron Framework!blink::PendingScript::ExecuteScriptBlockInternal(blink::Script*, blink::ScriptElementBase*, bool, bool, bool, base::TimeTicks, bool) [pending_script.cc : 275 + 0xa]
    rbp = 0x00007ffeea2977b0   rsp = 0x00007ffeea297760
    rip = 0x000000010cd41145
    Found by: previous frame's frame pointer
26  Electron Framework!blink::PendingScript::ExecuteScriptBlock(blink::KURL const&) [pending_script.cc : 186 + 0x23]
    rbp = 0x00007ffeea297840   rsp = 0x00007ffeea2977c0
    rip = 0x000000010cd40f8e
    Found by: previous frame's frame pointer
27  Electron Framework!blink::ScriptLoader::PrepareScript(WTF::TextPosition const&, blink::ScriptLoader::LegacyTypeSupport) [script_loader.cc : 748 + 0x10]
    rbp = 0x00007ffeea297a00   rsp = 0x00007ffeea297850
    rip = 0x000000010cd3d719
    Found by: previous frame's frame pointer
28  Electron Framework!blink::HTMLParserScriptRunner::ProcessScriptElementInternal(blink::Element*, WTF::TextPosition const&) [html_parser_script_runner.cc : 541 + 0xd]
    rbp = 0x00007ffeea297b20   rsp = 0x00007ffeea297a10
    rip = 0x000000010cd3b8f1
    Found by: previous frame's frame pointer
29  Electron Framework!blink::HTMLParserScriptRunner::ProcessScriptElement(blink::Element*, WTF::TextPosition const&) [html_parser_script_runner.cc : 320 + 0xe]
    rbp = 0x00007ffeea297b60   rsp = 0x00007ffeea297b30
    rip = 0x000000010cd3b702
    Found by: previous frame's frame pointer
30  Electron Framework!blink::HTMLDocumentParser::ProcessTokenizedChunkFromBackgroundParser(std::__1::unique_ptr<blink::HTMLDocumentParser::TokenizedChunk, std::__1::default_delete<blink::HTMLDocumentParser::TokenizedChunk> >) [html_document_parser.cc : 279 + 0x5]
    rbp = 0x00007ffeea297c10   rsp = 0x00007ffeea297b70
    rip = 0x000000010c922848
    Found by: previous frame's frame pointer
31  Electron Framework!blink::HTMLDocumentParser::PumpPendingSpeculations() [html_document_parser.cc : 594 + 0xf]
    rbp = 0x00007ffeea297c80   rsp = 0x00007ffeea297c20
    rip = 0x000000010c921665
    Found by: previous frame's frame pointer
32  Electron Framework!blink::TaskHandle::Runner::Run(blink::TaskHandle const&) [callback.h : 99 + 0x6]
    rbp = 0x00007ffeea297cb0   rsp = 0x00007ffeea297c90
    rip = 0x000000010a0476e0
    Found by: previous frame's frame pointer
33  Electron Framework!base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) [callback.h : 99 + 0x6]
    rbp = 0x00007ffeea297d10   rsp = 0x00007ffeea297cc0
    rip = 0x000000010a599163
    Found by: previous frame's frame pointer
34  Electron Framework!base::sequence_manager::internal::ThreadControllerImpl::DoWork(base::sequence_manager::internal::ThreadControllerImpl::WorkType) [thread_controller_impl.cc : 209 + 0x13]
    rbp = 0x00007ffeea297e80   rsp = 0x00007ffeea297d20
    rip = 0x000000010a5f7311
    Found by: previous frame's frame pointer
35  Electron Framework!base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) [callback.h : 99 + 0x6]
    rbp = 0x00007ffeea297ee0   rsp = 0x00007ffeea297e90
    rip = 0x000000010a599163
    Found by: previous frame's frame pointer
36  Electron Framework!base::MessageLoopImpl::RunTask(base::PendingTask*) [message_loop_impl.cc : 355 + 0xf]
    rbp = 0x00007ffeea297f70   rsp = 0x00007ffeea297ef0
    rip = 0x000000010a5b3bdf
    Found by: previous frame's frame pointer
37  Electron Framework!base::MessageLoopImpl::DoWork() [message_loop_impl.cc : 366 + 0xb]
    rbp = 0x00007ffeea298160   rsp = 0x00007ffeea297f80
    rip = 0x000000010a5b4143
    Found by: previous frame's frame pointer
38  Electron Framework!base::MessagePumpCFRunLoopBase::RunWork() [message_pump_mac.mm : 487 + 0x6]
    rbp = 0x00007ffeea298190   rsp = 0x00007ffeea298170
    rip = 0x000000010a65a9b3
    Found by: previous frame's frame pointer
39  Electron Framework!base::mac::CallWithEHFrame(void () block_pointer) + 0xa
    rbp = 0x00007ffeea2981a0   rsp = 0x00007ffeea2981a0
    rip = 0x000000010a59432a
    Found by: previous frame's frame pointer
40  Electron Framework!base::MessagePumpCFRunLoopBase::RunWorkSource(void*) [message_pump_mac.mm : 461 + 0x5]
    rbp = 0x00007ffeea2981e0   rsp = 0x00007ffeea2981b0
    rip = 0x000000010a65a31f
    Found by: previous frame's frame pointer
41  CoreFoundation + 0x56dbb
    rbp = 0x00007ffeea2981f0   rsp = 0x00007ffeea2981f0
    rip = 0x00007fff3a91adbb
    Found by: previous frame's frame pointer
42  CoreFoundation + 0x56d61
    rbp = 0x00007ffeea298220   rsp = 0x00007ffeea298200
    rip = 0x00007fff3a91ad61
    Found by: previous frame's frame pointer
43  CoreFoundation + 0x3ac6b
    rbp = 0x00007ffeea298290   rsp = 0x00007ffeea298230
    rip = 0x00007fff3a8fec6b
    Found by: previous frame's frame pointer
44  CoreFoundation + 0x3a233
    rbp = 0x00007ffeea298fa0   rsp = 0x00007ffeea2982a0
    rip = 0x00007fff3a8fe233
    Found by: previous frame's frame pointer
45  CoreFoundation + 0x39b35
    rbp = 0x00007ffeea299030   rsp = 0x00007ffeea298fb0
    rip = 0x00007fff3a8fdb35
    Found by: previous frame's frame pointer
46  Foundation + 0x1c8ef
    rbp = 0x00007ffeea299070   rsp = 0x00007ffeea299040
    rip = 0x00007fff3cb7f8ef
    Found by: previous frame's frame pointer
47  Electron Framework!base::MessagePumpNSRunLoop::DoRun(base::MessagePump::Delegate*) [message_pump_mac.mm : 765 + 0x10]
    rbp = 0x00007ffeea2990b0   rsp = 0x00007ffeea299080
    rip = 0x000000010a65aec1
    Found by: previous frame's frame pointer
48  Electron Framework!base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) [message_pump_mac.mm : 185 + 0xc]
    rbp = 0x00007ffeea2990f0   rsp = 0x00007ffeea2990c0
    rip = 0x000000010a659cef
    Found by: previous frame's frame pointer
49  Electron Framework!base::RunLoop::Run() [run_loop.cc : 150 + 0x9]
    rbp = 0x00007ffeea299180   rsp = 0x00007ffeea299100
    rip = 0x000000010a5d2b08
    Found by: previous frame's frame pointer
50  Electron Framework!content::RendererMain(content::MainFunctionParams const&) [renderer_main.cc : 233 + 0x5]
    rbp = 0x00007ffeea299250   rsp = 0x00007ffeea299190
    rip = 0x000000010d6646f3
    Found by: previous frame's frame pointer
51  Electron Framework!content::ContentMainRunnerImpl::Run(bool) [content_main_runner_impl.cc : 871 + 0x5]
    rbp = 0x00007ffeea2992c0   rsp = 0x00007ffeea299260
    rip = 0x000000010a1e67bf
    Found by: previous frame's frame pointer
52  Electron Framework!service_manager::Main(service_manager::MainParams const&) [main.cc : 461 + 0xa]
    rbp = 0x00007ffeea299600   rsp = 0x00007ffeea2992d0
    rip = 0x000000010bd91a6f
    Found by: previous frame's frame pointer
53  Electron Framework!content::ContentMain(content::ContentMainParams const&) [content_main.cc : 19 + 0x8]
    rbp = 0x00007ffeea299690   rsp = 0x00007ffeea299610
    rip = 0x000000010a1e5c24
    Found by: previous frame's frame pointer
54  Electron Framework!AtomMain [atom_library_main.mm : 23 + 0x5]
    rbp = 0x00007ffeea299710   rsp = 0x00007ffeea2996a0
    rip = 0x00000001082cda94
    Found by: previous frame's frame pointer
55  Electron Helper!main [atom_main.cc : 245 + 0xb]
    rbp = 0x00007ffeea2997e0   rsp = 0x00007ffeea299720
    rip = 0x0000000105967905
    Found by: previous frame's frame pointer
56  libdyld.dylib + 0x163d5
    rbp = 0x00007ffeea2997f8   rsp = 0x00007ffeea2997f0
    rip = 0x00007fff668c63d5
    Found by: previous frame's frame pointer
57  libdyld.dylib + 0x163d5
    rbp = 0x00007ffeea2997f8   rsp = 0x00007ffeea2997f8
    rip = 0x00007fff668c63d5
    Found by: stack scanning

Which looks like a sensible stack to me, except that the top frame isn't named. I suspect that's because we don't do this base::debug::Alias thing, though not 100% sure.

@nornagon nornagon added the blocked/need-info ❌ Cannot proceed without more information label Jul 26, 2019
@alexeykuzmin
Copy link
Contributor Author

alexeykuzmin commented Jul 26, 2019

@nornagon On Mac it looks not that bad, I agree. We see the same stacktrace in the App Center.
Still it's worse than it was in the Electron 3 though =/

Could you please check Windows?, it's a more important platform than Mac.

@alexeykuzmin alexeykuzmin added platform/windows platform/macOS and removed blocked/need-info ❌ Cannot proceed without more information labels Jul 26, 2019
@nornagon
Copy link
Member

Worse in what way?

@alexeykuzmin alexeykuzmin changed the title bug: breakpad symbols appear to be broken on Mac and Windows bug: breakpad symbols appear to be broken on Windows Jul 26, 2019
@nornagon
Copy link
Member

I believe this is due to the fact that the symbols in v5.0.7 and higher are named .exe.pdb.sym instead of .exe.sym.

Archive:  electron-v5.0.6-win32-x64-symbols.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
117430304  06-26-2019 17:13   .../electron.exe.sym
[...]
Archive:  electron-v5.0.7-win32-x64-symbols.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
138482378  07-16-2019 12:03   .../electron.exe.pdb.sym
[...]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants