Bug 1701357 Comment 6 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

"browser" is a hard-coded option:

https://github.com/mozilla-services/socorro/blob/2842db4f30468e44d12bbd6016bc4b39c2ae9b29/webapp-django/crashstats/settings/base.py#L289-L298

It's also hard-coded here:

https://github.com/mozilla-services/socorro/blob/2842db4f30468e44d12bbd6016bc4b39c2ae9b29/socorro/external/es/super_search_fields.py#L3010

That also has this comment:

> What type of process the crash happened in. When the main process crashes, this will
> not be present. But when a plugin or content process crashes, this will be
> 'plugin' or 'content'.

It's implemented in SuperSearch as a "if the user specified browser, then switch it to does-not-exist":

https://github.com/mozilla-services/socorro/blob/2842db4f30468e44d12bbd6016bc4b39c2ae9b29/socorro/lib/search_common.py#L291-L327

If you do a facet on process types, "browser" doesn't show up:

https://crash-stats.mozilla.org/search/?date=%3E%3D2021-03-02T19%3A37%3A00.000Z&date=%3C2021-04-02T19%3A37%3A00.000Z&_facets=signature&_facets=process_type&_sort=-date&_columns=date&_columns=signature&_columns=product&_columns=version&_columns=build_id&_columns=platform#facet-process_type

rank | type | count | percentage
--- | --- | --- | ---
1 | content | 1353119 | 25.05 %
2 | gpu | 7878 | 0.15 %
3 | plugin | 7537 | 0.14 %
4 | rdd | 2085 | 0.04 %
5 | socket | 197 | 0.00 %
6 | vr

Fun.

Looking at specific crash reports, this crash report has "Process type: content" in the crash annotations and shows a "Process Type: content" in the Details tab of the report view:

https://crash-stats.mozilla.org/report/index/fc8594ba-7cfa-47d1-b5be-155990210402

This crash report has no "Process type" annotation and so it shows nothing in the Details tab:

https://crash-stats.mozilla.org/report/index/117042d9-e0a9-4d85-bcac-b59410210402

So I think we've got a handful of issues and complexities:

1. Crash reports with no ProcessType annotation don't have a "Process type" line in the Details tab of report view on Crash Stats which is confusing.
2. Crash reports with no ProcessType annotation aren't easily searchable in SuperSearch--there's this whole "browser" option, but that gets converted to "does not exist" and these crash reports won't show up in a "browser" facet. I remember hitting this a while back when looking at the Email data and I had to do gymnastics to work around it.
3. If we changed this in the crash reporting client, the value would be "default" which would be confusing and doesn't match anything in Socorro.
4. If we changed this in the crash reporting client or added a normalization step to crash report processing that fixed the ProcessType field, it'd cause skew in values between crash pings and crash reports

Given all that, I think I want to create a new field in the processed crash data that's a normalized ProcessType value. Then we can get rid of all the special-casing and hard-coded stuff and the inconsistent weirdness. Maybe call it normalized_process_type or something like that.

Does the lack of a ProcessType annotation in the crash report *always* mean that the process is the browser for all products? Is this just for Firefox or some subset?

If we were to normalize it to something and because it's a Socorro value, we don't have to make it match crash pings, is "browser" the right thing to use? What about "main" or "parent"? What's the least confusing?
"browser" is a hard-coded option:

https://github.com/mozilla-services/socorro/blob/2842db4f30468e44d12bbd6016bc4b39c2ae9b29/webapp-django/crashstats/settings/base.py#L289-L298

It's also hard-coded here:

https://github.com/mozilla-services/socorro/blob/2842db4f30468e44d12bbd6016bc4b39c2ae9b29/socorro/external/es/super_search_fields.py#L3010

That also has this comment:

> What type of process the crash happened in. When the main process crashes, this will
> not be present. But when a plugin or content process crashes, this will be
> 'plugin' or 'content'.

It's implemented in SuperSearch as a "if the user specified browser, then switch it to does-not-exist":

https://github.com/mozilla-services/socorro/blob/2842db4f30468e44d12bbd6016bc4b39c2ae9b29/socorro/lib/search_common.py#L291-L327

If you do a facet on process types, "browser" doesn't show up:

https://crash-stats.mozilla.org/search/?date=%3E%3D2021-03-02T19%3A37%3A00.000Z&date=%3C2021-04-02T19%3A37%3A00.000Z&_facets=signature&_facets=process_type&_sort=-date&_columns=date&_columns=signature&_columns=product&_columns=version&_columns=build_id&_columns=platform#facet-process_type

rank | type | count | percentage
--- | --- | --- | ---
1 | content | 1353119 | 25.05 %
2 | gpu | 7878 | 0.15 %
3 | plugin | 7537 | 0.14 %
4 | rdd | 2085 | 0.04 %
5 | socket | 197 | 0.00 %
6 | vr

Fun.

Looking at specific crash reports, this crash report has "Process type: content" in the crash annotations and shows a "Process Type: content" in the Details tab of the report view:

https://crash-stats.mozilla.org/report/index/fc8594ba-7cfa-47d1-b5be-155990210402

This crash report has no "Process type" annotation and so it shows nothing in the Details tab:

https://crash-stats.mozilla.org/report/index/117042d9-e0a9-4d85-bcac-b59410210402

So I think we've got a handful of issues and complexities:

1. Crash reports with no ProcessType annotation don't have a "Process type" line in the Crash Annotations tab of report view on Crash Stats which is confusing.
2. Crash reports with no ProcessType annotation aren't easily searchable in SuperSearch--there's this whole "browser" option, but that gets converted to "does not exist" and these crash reports won't show up in a "browser" facet. I remember hitting this a while back when looking at the Email data and I had to do gymnastics to work around it.
3. If we changed this in the crash reporting client, the value would be "default" which would be confusing and doesn't match anything in Socorro.
4. If we changed this in the crash reporting client or added a normalization step to crash report processing that fixed the ProcessType field, it'd cause skew in values between crash pings and crash reports

Given all that, I think I want to create a new field in the processed crash data that's a normalized ProcessType value. Then we can get rid of all the special-casing and hard-coded stuff and the inconsistent weirdness. Maybe call it normalized_process_type or something like that.

Does the lack of a ProcessType annotation in the crash report *always* mean that the process is the browser for all products? Is this just for Firefox or some subset?

If we were to normalize it to something and because it's a Socorro value, we don't have to make it match crash pings, is "browser" the right thing to use? What about "main" or "parent"? What's the least confusing?

Back to Bug 1701357 Comment 6