nickhatz's blog

GSOC 2017 - Crash Reporting - Report 8

4 years ago • 0 comments

What I did this week

We fixed the path issue of breakpad

Then I studied the code of how chromium and libreoffice implements breakpad. After a thorough review I concluded that when a crash occurs we have to open a new process by opening a fork and create a child process, which then it will open the dialog window for asking the user if he/she wants to send the debug information. This dialog window will be different executable.

One implementation

Read more

GSOC 2017 - Crash Reporting - Report 7

4 years ago • 1 comment

What I did last Week

This week I made a pull request for my branch add-breakpad. After the pull, I had some issues on compiling it on Linux. I worked on this issue and now the code successfully passed the compiling tests for all three operating systems, linux, windows and OSX. Next I got many comments from my mentor and from other people in the community regarding cmake and appveyor. Following the comments and suggestions for cmake, breakpads is now

Read more

GSOC 2017 - Crash Reporting - Report 6

4 years ago • 0 comments

On my previous post we have three components: The building procedure where we have the creation of the symbol file, the generation of the minidump files on the client side and the webserver where it will integrate both symbol and minidumps to show the errors. For this week I got mostly involved into building Musescore and uploading the symbols to the webserver. For the webserver at this stage we are going to use .

For the building procedure I

Read more

GSOC 2017 - Crash Reporting - Report 5

5 years ago • 0 comments

Breakpads Implementation for Windows using mingw32

General Flow Chart:


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 (…) 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 but it is not working. The following command will produce the MuseScore.pdb file, it

Read more

GSOC 2017 - Crash Reporting - Report 4

5 years ago • 0 comments

Requirements for the metadata gathering process of the client

- The software shall use a hashmap which will contain a key and a value
- The software shall dump the map into JSON format it may use the disk or memory for storage

- The metadata shall show how many seconds MuseScore has been running before
- The metadata shall show the load of the RAM at this time
- The metadata shall show the last command executed

Read more

GSOC 2017 - Crash Reporting - Report 3

5 years ago • 2 comments

I decided to make a flow chart to show the various processes of breakpads and where they took place:


Next I made a Qt example based on the Qt breakpad integration example from here:

My source code of the example is locate here:…

My build is located here:…

I compiled it using CMake and MSVC2015

When you run the exe it will show up a Qt window for a few seconds and after that the crash

Read more

GSOC 2017 - Crash Reporting - Report 2

5 years ago • 0 comments

I was able to compile breakpads client in windows environment with qmake(Qt creator) and mingw32 with this source code:

This is a simple example that generates a crash and creates a minidump file under c:\temp

The next step is to produce the symbol file from the executable. For this step breakpads comes with a precompiled tool called dump_syms. I tried all possibles ways using dump_syms to generate the sym file and I couldn't make it. dump_syms can not recognize

Read more

GSOC 2017 - Crash reporting - Report 1

5 years ago • 0 comments

I am having issues on compiling breakpads on windows

I actually succeeded to compile libbreakpad.a using msys and mingw32

But I overpass some issues using this code for strtok_r which I found from stack overflow:

char* strtok_r(
char *str,
const char *delim,
char **nextp)
char *ret;

if (str == NULL)
    str = *nextp;

str += strspn(str, delim);

if (*str == '\0')
    return NULL;

ret = str;

str += strcspn(str, delim);

if (*str)
    *str++ =
Read more