Hash :
0757254b
Author :
Date :
2024-11-22T10:21:29
Tests: Add crash callback to test Replay (e.g. linux-trace) Prints a backtrace on trapped signals. Didn't help with the issue on the bug as it was an OOM -> SIGKILL which can't be trapped but generally nice to have. Also adds stdout flushes to the signal handler as stdout redirection is by default _not_ line-buffered, so without a flush the printfs just go into the buffer and don't actually show up in the redirected output (including on bots). This might be the reason we were missing backtraces in some other cases. Bug: angleproject:380296979 Change-Id: I9fbba35e3bf4e6d863139ceb533f51973fe2f98d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6044040 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
# Copyright 2020 The ANGLE Project Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("../../../gni/angle.gni")
import("../angle_traces.gni")
declare_args() {
# Determines if we build the capture_replay_tests. Off by default.
angle_build_capture_replay_tests = false
# Set the trace directory. Default is traces
angle_capture_replay_test_trace_dir = "traces"
angle_capture_replay_composite_file_id = 1
}
if (angle_build_capture_replay_tests) {
assert(angle_with_capture_by_default, "Must build with capture by default.")
_test_names_file = "test_names_${angle_capture_replay_composite_file_id}.json"
angle_trace_libs("angle_capture_replay_libs") {
_tracedir = angle_capture_replay_test_trace_dir
trace_dir = _tracedir
json_path = "$_tracedir/$_test_names_file"
_trace_json = read_file(json_path, "json")
trace_list = _trace_json.traces
short_names = true
}
}
angle_executable("capture_replay_tests") {
testonly = true
sources = [ "CaptureReplayTests.cpp" ]
deps = [
"$angle_root:angle_compression",
"$angle_root/util:angle_frame_capture_test_utils",
"$angle_root/util:angle_test_utils",
"$angle_root/util:angle_trace_loader",
"$angle_root/util:angle_util",
]
data_deps = [
"$angle_root:libEGL",
"$angle_root:libGLESv2",
]
configs += [
"$angle_root:library_name_config",
"${angle_root}:libANGLE_config",
]
defines = []
if ((is_linux || is_chromeos) && !is_component_build) {
# Set rpath to find shared libs in a non-component build.
configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
}
# Disable optimization to avoid optimizing huge files.
_trace_folder_relative_path = "./" + angle_capture_replay_test_trace_dir
_data_path = rebase_path(_trace_folder_relative_path, root_out_dir)
defines = [
"ANGLE_CAPTURE_REPLAY_TEST_DATA_DIR=\"${_data_path}\"",
"ANGLE_REPLAY_EXPORT=",
]
include_dirs = [ "." ]
if (angle_build_capture_replay_tests) {
deps += [ ":angle_capture_replay_libs" ]
}
}