ci: Add a fractional deqp run of softpipe with asan enabled.

This should help us avoid landing memory leaks (and some buffer overflows)
throughout the GL stack.  I put the asan lib in x86_test-base because
we'll want asan for lavapipe, too.

This requires keeping debug symbols for the asan drivers in the artifacts,
as otherwise you can't do much with the backtraces it produces.

Closes: #3726
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8530>
This commit is contained in:
Eric Anholt 2021-01-14 09:56:52 -08:00 committed by Marge Bot
parent b183b6ddd7
commit f180bf3e03
5 changed files with 161 additions and 4 deletions

View File

@ -346,7 +346,7 @@ android_build:
x86_test-base:
extends: x86_build-base
variables:
MESA_IMAGE_TAG: &x86_test-base "2020-12-17-install-ci-fairy"
MESA_IMAGE_TAG: &x86_test-base "2020-01-14-asan"
.use-x86_test-base:
extends:
@ -362,13 +362,13 @@ x86_test-base:
x86_test-gl:
extends: .use-x86_test-base
variables:
MESA_IMAGE_TAG: &x86_test-gl "2020-01-13-piglit"
MESA_IMAGE_TAG: &x86_test-gl "2020-01-14-asan"
# Debian 10 based x86 test image for VK
x86_test-vk:
extends: .use-x86_test-base
variables:
MESA_IMAGE_TAG: &x86_test-vk "2020-01-13-piglit"
MESA_IMAGE_TAG: &x86_test-vk "2020-01-14-asan"
# Debian 10 based ARM build image
arm_build:
@ -607,6 +607,7 @@ meson-testing-asan:
EXTRA_OPTION: >
-D b_sanitize=address
UPLOAD_FOR_LAVA: ""
ARTIFACTS_DEBUG_SYMBOLS: 1
meson-clover-testing:
extends:
@ -1235,6 +1236,17 @@ softpipe-gles31:
DEQP_VER: gles31
extends: softpipe-gles2
softpipe-asan-gles31:
variables:
GPU_VERSION: softpipe-asan
DEQP_FRACTION: 10
DEQP_VER: gles31
TEST_LD_PRELOAD: libasan.so.5
extends: softpipe-gles2
needs:
- x86_test-gl
- meson-testing-asan
softpipe-piglit-quick:
extends:
- .piglit-test

View File

@ -32,6 +32,7 @@ apt-get dist-upgrade -y
apt-get install -y --no-remove \
git \
git-lfs \
libasan5 \
libexpat1 \
libllvm10 \
libllvm9 \

View File

@ -189,13 +189,17 @@ check_renderer() {
# debug.
# export EGL_LOG_LEVEL=debug
VERSION=`echo $DEQP_VER | tr '[a-z]' '[A-Z]'`
export LD_PRELOAD=$TEST_LD_PRELOAD
$DEQP $DEQP_OPTIONS --deqp-case=$SUITE-$VERSION.info.\* --deqp-log-filename=$RESULTS/deqp-info.qpa
export LD_PRELOAD=
parse_renderer
}
check_vk_device_name() {
echo "Capturing device info for VK driver sanity checks"
export LD_PRELOAD=$TEST_LD_PRELOAD
$DEQP $DEQP_OPTIONS --deqp-case=dEQP-VK.info.device --deqp-log-filename=$RESULTS/deqp-info.qpa
export LD_PRELOAD=
DEVICENAME=`grep deviceName $RESULTS/deqp-info.qpa | sed 's|deviceName: ||g'`
echo "deviceName: $DEVICENAME"
if [ -n "$DEQP_EXPECTED_RENDERER" -a "x$DEVICENAME" != "x$DEQP_EXPECTED_RENDERER" ]; then
@ -241,9 +245,12 @@ fi
RESULTS_CSV=$RESULTS/results.csv
FAILURES_CSV=$RESULTS/failures.csv
export LD_PRELOAD=$TEST_LD_PRELOAD
run_cts $DEQP /tmp/case-list.txt $RESULTS_CSV
DEQP_EXITCODE=$?
export LD_PRELOAD=
quiet report_load
# Remove all but the first 50 individual XML files uploaded as artifacts, to

View File

@ -0,0 +1,135 @@
dEQP-GLES31.functional.compute.shared_var.basic_type.int_mediump,Missing
dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_rgba_astc_12x10_khr.texture3d_to_cubemap,Missing
dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr.texture2d_array_to_cubemap,Missing
dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.srgb8_punchthrough_alpha1_etc2_rgb8_punchthrough_alpha1_etc2.texture2d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr.texture2d_to_cubemap,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac.texture2d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr.cubemap_to_cubemap,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr.texture2d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x12_khr.texture2d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr.texture2d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i.texture2d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f.texture2d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui.cubemap_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f.texture2d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i.cubemap_to_texture3d,Missing
dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac.texture2d_array_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i.texture3d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm.texture3d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8.texture2d_to_texture2d_array,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui.texture2d_array_to_texture3d,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2.texture2d_array_to_renderbuffer,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i.texture2d_array_to_renderbuffer,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f.texture2d_array_to_cubemap,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5.renderbuffer_to_texture2d_array,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16ui.cubemap_to_texture2d_array,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i.texture3d_to_texture2d,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f.cubemap_to_texture3d,Missing
dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32f.cubemap_to_texture3d,Missing
dEQP-GLES31.functional.debug.negative_coverage.get_error.advanced_blend.blend_qualifier_mismatch,Missing
dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_fbo_format_mismatch,Fail
dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.vertex_attrib_format,Missing
dEQP-GLES31.functional.debug.negative_coverage.log.shader_function.bitfield_insert_invalid_base_type,Missing
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.0,Fail
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.10,Fail
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.0,Fail
dEQP-GLES31.functional.fbo.no_attachments.multisample.samples2,Fail
dEQP-GLES31.functional.geometry_shading.emit.triangle_strip_emit_1_end_2,Crash
dEQP-GLES31.functional.image_load_store.buffer.atomic.max_r32ui_result,Missing
dEQP-GLES31.functional.image_load_store.cube.store.r32i_single_layer,Missing
dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_stencil_fbo,Fail
dEQP-GLES31.functional.layout_binding.image.image3d.vertex_binding_multiple,Missing
dEQP-GLES31.functional.layout_binding.negative.image.image3d.vertex_binding_neg_array,Missing
dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var,Missing
dEQP-GLES31.functional.program_interface_query.program_input.referenced_by.referenced_by_vertex_tess_geo_fragment,Missing
dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.named_block.struct.float,Missing
dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.uvec3,Missing
dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.named_block.var_struct,Missing
dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex.default_block_struct_member,Missing
dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.whole_array.vec3,Missing
dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.ivec3_struct,Missing
dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.iimage_3d,Missing
dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.row_major.var,Missing
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.block_array.float_array,Missing
dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array,Missing
dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.int,Missing
dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.float_vec4_fragment,Missing
dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x3_row_major_both,Missing
dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.int_ivec4_both,Missing
dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.uint_uvec4_both,Missing
dEQP-GLES31.functional.separate_shader.api.active_program_uniform,Missing
dEQP-GLES31.functional.shaders.arrays_of_arrays.es31.parameter.out.float_3x3_fragment,Missing
dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.assignment.explicit_to_implicit.vec3_1x3_fragment,Missing
dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.constructor.implicit.ivec3_3x2x1_fragment,Missing
dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_mediump_tess_eval,Missing
dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_lowp_tess_eval,Missing
dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_lowp_geometry,Missing
dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_mediump_geometry,Missing
dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec3_highp_vertex,Missing
dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_mediump_geometry,Missing
dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.scalar,Missing
dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r8ui,Missing
dEQP-GLES31.functional.shaders.implicit_conversions.es31.array_subscripts.subscript_before_input.ivec3_to_vec3_vertex,Missing
dEQP-GLES31.functional.shaders.implicit_conversions.es31.array_subscripts.subscript_before_input.uint_to_vec4_vertex,Missing
dEQP-GLES31.functional.shaders.implicit_conversions.es31.comparisons.literal_before_input.greater_or_equal.int_to_float_vertex,Missing
dEQP-GLES31.functional.shaders.implicit_conversions.es31.invalid.structs.ivec2_to_uvec2_vertex,Missing
dEQP-GLES31.functional.shaders.implicit_conversions.es31.parenthesized_expressions.paren_expr_before_literal.input_outside_parens.int_to_float_vertex,Missing
dEQP-GLES31.functional.shaders.implicit_conversions.es32.arithmetic.input_before_literal.mul.uint_to_vec4_vertex,Missing
dEQP-GLES31.functional.shaders.implicit_conversions.es32.invalid.variables.vec4_to_uvec2_vertex,Missing
dEQP-GLES31.functional.shaders.linkage.es32.tessellation_geometry.varying.types.uint,Missing
dEQP-GLES31.functional.shaders.linkage.es32.tessellation.varying.types.uvec2,Missing
dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.uniform_geometry,Missing
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.tessellation_control.isampler2d,Missing
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.isampler2darray,Missing
dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.dynamically_uniform_geometry,Crash
dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat4x2,Missing
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.uvec3,Missing
dEQP-GLES31.functional.ssbo.layout.random.nested_structs.22,Missing
dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat3x4,Missing
dEQP-GLES31.functional.state_query.integer.debug_logged_messages_getboolean,Missing
dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger64,Fail
dEQP-GLES31.functional.state_query.integer.max_patch_vertices_getinteger64,Missing
dEQP-GLES31.functional.state_query.integer.max_vertex_shader_storage_blocks_getinteger64,Missing
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_integer,Fail
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_uint,Fail
dEQP-GLES31.functional.texture.border_clamp.formats.srgb8.nearest_size_pot,Missing
dEQP-GLES31.functional.texture.border_clamp.per_axis_wrap_mode.texture_2d.float_color.gather.s_mirrored_repeat_t_clamp_to_border_pot,Missing
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_mirror_repeat,Fail
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_clamp_repeat,Fail
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest_mipmap_nearest,Fail
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb5_a1_nearest,Fail
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba16f_nearest_mipmap_nearest,Fail
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_nearest_mipmap_linear,Fail
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_nearest_mipmap_linear,Fail
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.63x63x18_nearest_mipmap_nearest,Fail
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.mirrored_repeat_clamp_to_edge,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level.level_2,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.blue_alpha_zero_one,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level.level_1,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.green_blue_alpha_zero,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.green_blue_alpha_zero,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge,Fail
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat,Fail
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle.red_green_blue_alpha,Missing
dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat,Missing
dEQP-GLES31.functional.texture.multisample.samples_1.sample_position,Missing
dEQP-GLES31.functional.texture.multisample.samples_8.sample_mask_and_sample_coverage_and_alpha_to_coverage,Missing
dEQP-GLES31.functional.texture.specification.texstorage3d.format.rgb10_a2ui_cube_array,Missing
dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3_vertex,Missing
dEQP-GLES31.functional.ubo.3_level_array.packed.mat4_fragment,Missing
dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4x2_vertex,Missing
dEQP-GLES31.functional.uniform_location.min_max.ivec3_fragment_max,Missing
dEQP-GLES31.functional.uniform_location.struct.case_9,Missing

View File

@ -18,7 +18,9 @@ if [ -n "$CROSS" ]; then
else
STRIP="strip"
fi
find install -name \*.so -exec $STRIP {} \;
if [ -z "$ARTIFACTS_DEBUG_SYMBOLS"]; then
find install -name \*.so -exec $STRIP {} \;
fi
# Test runs don't pull down the git tree, so put the dEQP helper
# script and associated bits there.