Exemple #1
0
def filter_stacktrace(crash_stacktrace, crash_type, stack_clean_regex_lines,
                      revisions_dict):
  """Clean up and format a stack trace for display."""
  if not crash_stacktrace:
    return ''

  # Get stacktrace clean regex for filtering strings and even full lines.
  stack_clean_regex_list = filter(bool, stack_clean_regex_lines.splitlines())
  stack_clean_regex = (
      re.compile('(%s)' % '|'.join(stack_clean_regex_list))
      if stack_clean_regex_list else None)

  filtered_crash_lines = []
  for line in crash_stacktrace.splitlines():
    # Null out matched string from stacktrace clean regex.
    if stack_clean_regex:
      line = stack_clean_regex.sub('', line)
      if not line:
        continue

    # Html escape line content to prevent XSS.
    line = cgi.escape(line, quote=True)

    line = source_mapper.linkify_stack_frame(line, revisions_dict)

    filtered_crash_lines.append(line)

  filtered_crash_stacktrace = '\n'.join(filtered_crash_lines)

  if crash_type == leak_blacklist.DIRECT_LEAK_LABEL:
    return leak_blacklist.highlight_first_direct_leak(filtered_crash_stacktrace)

  return highlight_common_stack_frames(filtered_crash_stacktrace)
Exemple #2
0
def filter_stacktrace(crash_stacktrace, crash_type, revisions_dict):
  """Clean up and format a stack trace for display."""
  if not crash_stacktrace:
    return ''

  filtered_crash_lines = []
  for line in crash_stacktrace.splitlines():
    # Html escape line content to prevent XSS.
    line = cgi.escape(line, quote=True)

    line = source_mapper.linkify_stack_frame(line, revisions_dict)

    filtered_crash_lines.append(line)

  filtered_crash_stacktrace = '\n'.join(filtered_crash_lines)

  if crash_type == leak_blacklist.DIRECT_LEAK_LABEL:
    return leak_blacklist.highlight_first_direct_leak(filtered_crash_stacktrace)

  return highlight_common_stack_frames(filtered_crash_stacktrace)
Exemple #3
0
def filter_stacktrace(crash_stacktrace, crash_type, revisions_dict, platform,
                      job_type):
    """Clean up and format a stack trace for display."""
    if not crash_stacktrace:
        return ''

    filtered_crash_lines = []
    for line in crash_stacktrace.splitlines():
        # Html escape line content to prevent XSS.
        line = html.escape(line, quote=True)
        line = source_mapper.linkify_stack_frame(line, revisions_dict)

        if 'android' in platform or environment.is_lkl_job(job_type):
            line = _linkify_android_kernel_stack_frame_if_needed(line)

        filtered_crash_lines.append(line)

    filtered_crash_stacktrace = '\n'.join(filtered_crash_lines)

    if crash_type == leak_blacklist.DIRECT_LEAK_LABEL:
        return leak_blacklist.highlight_first_direct_leak(
            filtered_crash_stacktrace)

    return highlight_common_stack_frames(filtered_crash_stacktrace)