Package: libvpx
Version: 1.3.0-2
Usertags: goto-cc

During a rebuild of all Debian packages in a clean sid chroot (using cowbuilder
and pbuilder) the build failed with the following error. Please note that we
use our research compiler tool-chain (using tools from the cbmc package), which
permits extended reporting on type inconsistencies at link time.

[...]
gcc -shared -m64 -Wl,--no-undefined -Wl,-soname,libvpx.so.1 
-Wl,--version-script,libvpx.ver -o libvpx.so.1.3.0 vpx/src/svc_encodeframe.c.o 
vpx/src/vpx_decoder.c.o vpx/src/vpx_encoder.c.o vpx/src/vpx_codec.c.o 
vpx/src/vpx_image.c.o vpx_mem/vpx_mem.c.o vpx_scale/generic/vpx_scale.c.o 
vpx_scale/generic/yv12config.c.o vpx_scale/generic/yv12extend.c.o 
vpx_scale/generic/gen_scalers.c.o vpx_scale/vpx_scale_asm_offsets.c.o 
vpx_scale/vpx_scale_rtcd.c.o vpx_ports/x86_cpuid.c.o vp8/common/alloccommon.c.o 
vp8/common/blockd.c.o vp8/common/debugmodes.c.o vp8/common/dequantize.c.o 
vp8/common/entropy.c.o vp8/common/entropymode.c.o vp8/common/entropymv.c.o 
vp8/common/extend.c.o vp8/common/filter.c.o vp8/common/findnearmv.c.o 
vp8/common/generic/systemdependent.c.o vp8/common/idct_blk.c.o 
vp8/common/idctllm.c.o vp8/common/rtcd.c.o vp8/common/loopfilter.c.o 
vp8/common/loopfilter_filters.c.o vp8/common/mbpitch.c.o 
vp8/common/modecont.c.o vp8/common/quant_common.c.o vp8/common/reconinter.c.o 
vp8/common/reconintra.c.o vp8/common/reconintra4x4.c.o vp8/common/sad_c.c.o 
vp8/common/setupintrarecon.c.o vp8/common/swapyv12buffer.c.o 
vp8/common/variance_c.c.o vp8/common/treecoder.c.o 
vp8/common/x86/filter_x86.c.o vp8/common/x86/vp8_asm_stubs.c.o 
vp8/common/x86/loopfilter_x86.c.o vp8/common/mfqe.c.o vp8/common/postproc.c.o 
vp8/common/x86/idct_blk_mmx.c.o vp8/common/x86/variance_mmx.c.o 
vp8/common/x86/idct_blk_sse2.c.o vp8/common/x86/recon_wrapper_sse2.c.o 
vp8/common/x86/variance_sse2.c.o vp8/common/x86/variance_ssse3.c.o 
vp8/common/x86/postproc_x86.c.o vp8/vp8_cx_iface.c.o vp8/encoder/bitstream.c.o 
vp8/encoder/boolhuff.c.o vp8/encoder/dct.c.o vp8/encoder/encodeframe.c.o 
vp8/encoder/encodeintra.c.o vp8/encoder/encodemb.c.o vp8/encoder/encodemv.c.o 
vp8/encoder/ethreading.c.o vp8/encoder/firstpass.c.o vp8/encoder/denoising.c.o 
vp8/encoder/lookahead.c.o vp8/encoder/mcomp.c.o vp8/encoder/modecosts.c.o 
vp8/encoder/onyx_if.c.o vp8/encoder/pickinter.c.o vp8/encoder/picklpf.c.o 
vp8/encoder/psnr.c.o vp8/encoder/quantize.c.o vp8/encoder/ratectrl.c.o 
vp8/encoder/rdopt.c.o vp8/encoder/segmentation.c.o vp8/encoder/tokenize.c.o 
vp8/encoder/treewriter.c.o vp8/encoder/temporal_filter.c.o 
vp8/encoder/vp8_asm_enc_offsets.c.o vp8/encoder/x86/vp8_enc_stubs_mmx.c.o 
vp8/encoder/x86/quantize_sse2.c.o vp8/encoder/x86/denoising_sse2.c.o 
vp8/encoder/x86/vp8_enc_stubs_sse2.c.o vp8/vp8_dx_iface.c.o 
vp8/decoder/dboolhuff.c.o vp8/decoder/decodemv.c.o vp8/decoder/decodframe.c.o 
vp8/decoder/detokenize.c.o vp8/decoder/onyxd_if.c.o vp8/decoder/threading.c.o 
vp9/common/vp9_alloccommon.c.o vp9/common/vp9_convolve.c.o 
vp9/common/vp9_debugmodes.c.o vp9/common/vp9_entropy.c.o 
vp9/common/vp9_entropymode.c.o vp9/common/vp9_entropymv.c.o 
vp9/common/vp9_extend.c.o vp9/common/vp9_filter.c.o 
vp9/common/vp9_findnearmv.c.o vp9/common/generic/vp9_systemdependent.c.o 
vp9/common/vp9_idct.c.o vp9/common/vp9_pred_common.c.o vp9/common/vp9_rtcd.c.o 
vp9/common/vp9_scale.c.o vp9/common/vp9_seg_common.c.o 
vp9/common/vp9_tile_common.c.o vp9/common/vp9_loopfilter.c.o 
vp9/common/vp9_loopfilter_filters.c.o vp9/common/vp9_mvref_common.c.o 
vp9/common/vp9_quant_common.c.o vp9/common/vp9_reconinter.c.o 
vp9/common/vp9_reconintra.c.o vp9/common/vp9_treecoder.c.o 
vp9/common/vp9_common_data.c.o vp9/common/vp9_scan.c.o 
vp9/common/x86/vp9_asm_stubs.c.o vp9/common/x86/vp9_loopfilter_intrin_sse2.c.o 
vp9/common/x86/vp9_loopfilter_intrin_avx2.c.o 
vp9/common/x86/vp9_idct_intrin_sse2.c.o vp9/vp9_cx_iface.c.o 
vp9/encoder/vp9_bitstream.c.o vp9/encoder/vp9_boolhuff.c.o 
vp9/encoder/vp9_dct.c.o vp9/encoder/vp9_encodeframe.c.o 
vp9/encoder/vp9_encodeintra.c.o vp9/encoder/vp9_encodemb.c.o 
vp9/encoder/vp9_encodemv.c.o vp9/encoder/vp9_firstpass.c.o 
vp9/encoder/vp9_lookahead.c.o vp9/encoder/vp9_mcomp.c.o 
vp9/encoder/vp9_modecosts.c.o vp9/encoder/vp9_onyx_if.c.o 
vp9/encoder/vp9_picklpf.c.o vp9/encoder/vp9_psnr.c.o 
vp9/encoder/vp9_quantize.c.o vp9/encoder/vp9_ratectrl.c.o 
vp9/encoder/vp9_rdopt.c.o vp9/encoder/vp9_sad_c.c.o 
vp9/encoder/vp9_segmentation.c.o vp9/encoder/vp9_subexp.c.o 
vp9/encoder/vp9_tokenize.c.o vp9/encoder/vp9_treewriter.c.o 
vp9/encoder/vp9_variance_c.c.o vp9/encoder/vp9_vaq.c.o 
vp9/encoder/vp9_temporal_filter.c.o vp9/encoder/vp9_mbgraph.c.o 
vp9/encoder/x86/vp9_variance_mmx.c.o vp9/encoder/x86/vp9_variance_sse2.c.o 
vp9/encoder/x86/vp9_dct_sse2.c.o vp9/encoder/x86/vp9_dct32x32_sse2.c.o 
vp9/vp9_dx_iface.c.o vp9/decoder/vp9_dboolhuff.c.o vp9/decoder/vp9_decodemv.c.o 
vp9/decoder/vp9_decodframe.c.o vp9/decoder/vp9_detokenize.c.o 
vp9/decoder/vp9_thread.c.o vp9/decoder/vp9_onyxd_if.c.o 
vp9/decoder/vp9_dsubexp.c.o vpx_config.c.o vpx_ports/emms.asm.o 
vpx_ports/x86_abi_support.asm.o vp8/common/x86/dequantize_mmx.asm.o 
vp8/common/x86/idctllm_mmx.asm.o vp8/common/x86/iwalsh_mmx.asm.o 
vp8/common/x86/loopfilter_mmx.asm.o vp8/common/x86/recon_mmx.asm.o 
vp8/common/x86/sad_mmx.asm.o vp8/common/x86/subpixel_mmx.asm.o 
vp8/common/x86/variance_impl_mmx.asm.o vp8/common/x86/idctllm_sse2.asm.o 
vp8/common/x86/recon_sse2.asm.o vp8/common/x86/sad_sse2.asm.o 
vp8/common/x86/subpixel_sse2.asm.o vp8/common/x86/loopfilter_sse2.asm.o 
vp8/common/x86/iwalsh_sse2.asm.o vp8/common/x86/variance_impl_sse2.asm.o 
vp8/common/x86/sad_sse3.asm.o vp8/common/x86/sad_ssse3.asm.o 
vp8/common/x86/subpixel_ssse3.asm.o vp8/common/x86/variance_impl_ssse3.asm.o 
vp8/common/x86/sad_sse4.asm.o vp8/common/x86/postproc_mmx.asm.o 
vp8/common/x86/mfqe_sse2.asm.o vp8/common/x86/postproc_sse2.asm.o 
vp8/common/x86/loopfilter_block_sse2.asm.o vp8/encoder/x86/dct_mmx.asm.o 
vp8/encoder/x86/subtract_mmx.asm.o vp8/encoder/x86/dct_sse2.asm.o 
vp8/encoder/x86/fwalsh_sse2.asm.o vp8/encoder/x86/subtract_sse2.asm.o 
vp8/encoder/x86/temporal_filter_apply_sse2.asm.o 
vp8/encoder/x86/quantize_ssse3.asm.o vp8/encoder/x86/quantize_sse4.asm.o 
vp8/encoder/x86/quantize_mmx.asm.o vp8/encoder/x86/encodeopt.asm.o 
vp8/encoder/x86/ssim_opt.asm.o vp9/common/x86/vp9_loopfilter_mmx.asm.o 
vp9/common/x86/vp9_subpixel_8t_sse2.asm.o 
vp9/common/x86/vp9_subpixel_8t_ssse3.asm.o vp9/common/x86/vp9_copy_sse2.asm.o 
vp9/common/x86/vp9_intrapred_sse2.asm.o 
vp9/common/x86/vp9_intrapred_ssse3.asm.o 
vp9/encoder/x86/vp9_variance_impl_mmx.asm.o vp9/encoder/x86/vp9_sad_mmx.asm.o 
vp9/encoder/x86/vp9_variance_impl_sse2.asm.o 
vp9/encoder/x86/vp9_sad4d_sse2.asm.o 
vp9/encoder/x86/vp9_subpel_variance_impl_sse2.asm.o 
vp9/encoder/x86/vp9_temporal_filter_apply_sse2.asm.o 
vp9/encoder/x86/vp9_sad_sse3.asm.o vp9/encoder/x86/vp9_error_sse2.asm.o 
vp9/encoder/x86/vp9_sad_sse2.asm.o vp9/encoder/x86/vp9_subtract_sse2.asm.o 
vp9/encoder/x86/vp9_subpel_variance.asm.o 
vp9/encoder/x86/vp9_quantize_ssse3.asm.o vp9/encoder/x86/vp9_sad_ssse3.asm.o 
vp9/encoder/x86/vp9_sad_sse4.asm.o vp9/encoder/x86/vp9_ssim_opt.asm.o 
third_party/x86inc/x86inc.asm.o -lpthread -lm

error: conflicting function declarations "vp9_full_search_sad_c"
old definition in module vp9_rtcd file ././vp9_rtcd.h line 861
signed int (struct macroblock *, union int_mv *, signed int, signed int, struct 
vp9_variance_vtable *, signed int *, signed int **, union int_mv *, signed int)
new definition in module vp9_mcomp file 
/srv/jenkins-slave/workspace/sid-goto-cc-libvpx/libvpx-1.3.0/vp9/encoder/vp9_mcomp.c
 line 1461
signed int (struct macroblock *x, union int_mv *ref_mv, signed int sad_per_bit, 
signed int distance, struct vp9_variance_vtable *fn_ptr, signed int *mvjcost, 
signed int **mvcost, union int_mv *center_mv, signed int n)

reason for conflict at in types listed below (struct/struct):
composite type component counts differ (74/84)
struct macroblock {
  signed short int [400l] src_diff;
  signed short int [400l] coeff;
  unsigned char [256l] thismb;
  unsigned char * thismb_ptr;
  struct block [25l] block;
  struct yv12_buffer_config src;
  unsigned long int $pad0;
  struct macroblockd e_mbd;
  [...]
}
struct macroblock {
  struct macroblock_plane [3l] plane;
  struct macroblockd e_mbd;
  [...]
}
Makefile:354: recipe for target 'libvpx.so.1.3.0' failed
make[2]: *** [libvpx.so.1.3.0] Error 64
Makefile:17: recipe for target '.DEFAULT' failed
make[1]: *** [.DEFAULT] Error 2
make[1]: Leaving directory 
'/srv/jenkins-slave/workspace/sid-goto-cc-libvpx/libvpx-1.3.0/builddir'
debian/rules:105: recipe for target 'build-stamp' failed
make: *** [build-stamp] Error 2

It seems that the implementation of vp9_full_search_sad_c uses the following
declaration of struct macroblock:

http://sources.debian.net/src/libvpx/1.3.0-2/vp9/encoder/vp9_block.h?hl=91#L91

and will immediately access the e_mbd field:

http://sources.debian.net/src/libvpx/1.3.0-2/vp9/encoder/vp9_mcomp.c?hl=1466#L1461

Yet when compiling vp9_rtcd the following declaration of struct macroblock is
visible instead:

http://sources.debian.net/src/libvpx/1.3.0-2/vp8/encoder/block.h?hl=63#L63

If any of those structs is passed to vp9_full_search_sad_c, the attempt to
access e_mbd will end up somewhere in the middle of the struct, likely accessing
invalid memory.

Best,
Michael


Attachment: pgp7_hOKm7CZw.pgp
Description: PGP signature

Reply via email to