templates/file_crash_bug_description.md.jinja (74 lines of code) (raw):
{#
Part of this template was extracted from Socorro's repository:
https://github.com/mozilla-services/socorro/blob/ff8f5d6b41689e34a6b800577d8ffe383e1e62eb/webapp/crashstats/crashstats/jinja2/crashstats/bug_comment.txt
https://github.com/mozilla-services/socorro/blob/ff8f5d6b41689e34a6b800577d8ffe383e1e62eb/webapp/crashstats/signature/jinja2/signature/signature_summary.html#L7-L41
#}
Crash report: https://crash-stats.mozilla.org/report/index/{{ uuid }}
{% if java_stack_trace %}
Java stack trace:
```
{{ java_stack_trace|truncate(5000, True)|safe }}
```
{% elif frames %}
{% if moz_crash_reason %}
MOZ_CRASH Reason: ```{{ moz_crash_reason|safe }}```
{% elif reason %}
Reason: ```{{ reason|safe }}```
{% endif %}
{% if crashing_thread is none %}
No crashing thread identified; using thread 0.
{% endif %}
Top {{ frames|length }} frames of crashing thread:
```
{% for frame in frames -%}
{{ frame.frame|safe}} {{ frame.module|safe }} {{ frame.signature|safe }} {{ frame.source|safe }}
{% endfor -%}
```
{% endif %}
By querying {{ signature_details_channel }} crashes reported within the last {{ signature_details_delta }}, here are some insights about the signature:
- **First crash report:** {{ signature.first_crash_date_ymd }}
- **Process type:** {{ signature.process_type_summary }}
- **Is startup crash:** {{ "Yes - " if signature.is_startup_related_crash else "No" }}
{%- if signature.is_startup_crash -%}
all crashes happened during startup
{%- elif signature.is_potential_startup_crash -%}
{{ signature.num_startup_crashes }} out of {{ signature.num_crashes }} crashes happened during startup
{%- elif signature.is_startup_window_crash -%}
more than half of the crashes happened during the first minute after launch
{%- endif %}
- **Has user comments:** {% if signature.has_user_comments -%}
[Yes]({{ signature.user_comments_page_url }})
{%- else -%}
No
{%- endif %}
- **Is null crash:** {{ "Yes - " if signature.is_near_null_related_crash else "No" }}
{%- if signature.is_near_null_crash -%}
all crashes happened on null or near null memory address
{%- elif signature.is_potential_near_null_crash -%}
{{ signature.num_near_null_crashes }} out of {{ signature.num_crashes }} crashes happened on null or near null memory address
{%- endif %}
{% if signature.is_near_allocator_related_crash -%}
- **Is use after free crash:** {{ "Yes - " if signature.is_near_allocator_related_crash else "No" }}
{%- if signature.is_near_allocator_crash -%}
all crashes happened on or near an allocator poison value
{%- elif signature.is_potential_near_allocator_crash -%}
{{ signature.num_near_allocator_crashes }} out of {{ signature.num_crashes }} crashes happened on or near an allocator poison value
{%- endif %}
{%- endif %}
{% if signature.is_potential_phc_crash -%}
- **Is PHC crash:** {{ "Yes - " if signature.is_potential_phc_crash else "No" }}
{%- if signature.is_phc_crash -%}
all crashes have PHC allocation stack trace
{%- elif signature.is_potential_phc_crash -%}
{{ signature.num_phc_crashes }} out of {{ signature.num_crashes }} crashes have PHC allocation stack trace
{%- endif %}
{%- endif %}
{% if signature.regressed_by %}
By analyzing the backtrace, the regression may have been introduced by a {{ "patch [1]" if signature.regressed_by_patch else "patch"}} to fix Bug {{ signature.regressed_by }}.
{% if signature.regressed_by_patch %}
[1] https://hg.mozilla.org/mozilla-central/rev?node={{ signature.regressed_by_patch }}
{%- endif %}
{% endif %}
{% if needinfo_regression_author %}
:{{ signature.regressed_by_author["nick"] }}, since you are the author of the potential regressor, could you please take a look?
{% endif %}