GSOC 2017 - Crash Reporting - Report 5

Posted 6 years ago

Breakpads Implementation for Windows using mingw32

General Flow Chart:

muse_breakpads_mingw.png

Generation of Symbol file: MuseScore.sym

a) Generation of Dwarf data
where MuseScore.exe needs to be build with g++ -g

b) Generation of pdb file from MuseScore.exe using cv2pdb (https://github.com/gsocnikos/musescore_crash/raw/master/cv2pdb/cv2pdb.e…) this exe I compiled it with MS VC++ 2015 and it works OK with mingw32 version 5.3.0 . I tried the precompiled version from https://github.com/rainers/cv2pdb/releases but it is not working. The following command will produce the MuseScore.pdb file, it might take up to 10-15 minutes:

cv2pdb.exe MuseScore.exe

c) Symbol generation using precompiled dump_sym (https://chromium.googlesource.com/breakpad/breakpad/+/master/src/tools/…). For downloading breakpad code you can use the git command though google is recommending to use the depot_tools (fetch breakpad). The following command will produce the symbol file:

dump_syms.exe MuseScore.pdb > MuseScore.sym

d) Upload the MuseScore.sym to the server. I am currently using curl and cygwin using the command:

curl --data-binary @MuseScore.sym "https://musescore.sp.backtrace.io:6098/post?format=symbols&token=8ca115…"

Generation of Minidump file for breakpad client

When a crash occure breakpad client will upload the dmp file into the server. The manual command is:

curl --data-binary @fb4f6a25-71ba-4a74-bf6a-997fcf071347.dmp "https://musescore.sp.backtrace.io:6098/post?format=minidump&token=00268…"

Implementation of source code for musescore can be found under the folder thirdparty/breakpad:
https://github.com/musescore/MuseScore/compare/master...gsocnikos:add-b…

Next Steps

a) clear up the breakpad files that I am not using at the thirdparty/breakpad: https://github.com/gsocnikos/musescore

b) tried to see how the metadata works with the server and which information I need to include from musescore

c) implementatio for linux and mac of breakpad, currently this version works only for windows.