watery01 / libyuv

Automatically exported from code.google.com/p/libyuv
0 stars 0 forks source link

libyuvTest_ARGBToRAW valgrind read error #102

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
17:12:22 memcheck_analyze.py [ERROR] Command: 
InvalidRead
Invalid read of size 8
  ARGBToRAWRow_SSSE3 (/source/row_posix.cc:550)
  ARGBToRAWRow_Any_SSSE3 (/source/row_common.cc:975)
  ARGBToRAW (/source/planar_functions.cc:587)
  libyuv::libyuvTest_ARGBToRAW_Random_Test::TestBody() (/unit_test/planar_test.cc:367)
Address 0x5f7deb0 is 0 bytes after a block of size 4,096 alloc'd
  malloc (m_replacemalloc/vg_replace_malloc.c:263)
  libyuv::libyuvTest_ARGBToRAW_Random_Test::TestBody() (/unit_test/planar_test.cc:367)
Suppression (error hash=#8B66734C2BC568DC#):
  For more info on using suppressions see http://dev.chromium.org/developers/tree-sheriffs/sheriff-details-chromium/memory-sheriff#TOC-Suppressing-memory-reports
{
   <insert_a_suppression_name_here>
   Memcheck:Unaddressable
   fun:ARGBToRAWRow_SSSE3
   fun:ARGBToRAWRow_Any_SSSE3
   fun:ARGBToRAW
   fun:_ZN6libyuv32libyuvTest_ARGBToRAW_Random_Test8TestBodyEv
}

1

Original issue reported on code.google.com by fbarch...@google.com on 28 Sep 2012 at 12:01

GoogleCodeExporter commented 9 years ago
r400 fixes this for I420ToRGB24 by doing 1 pass.
This is caused by RGB to RGB any that overread into a buffer, then memcpy to 
the destination.
Although the overread allows effecient assembly for the full row, it can cause 
a segfault.  and doing a memcpy is not fully efficient.
Suggest using last16 technique like ARGBToYRow_Any_SSSE3 or C remainder.

Original comment by fbarch...@google.com on 10 Oct 2012 at 12:40

GoogleCodeExporter commented 9 years ago
Fixed in r402.  Padding removed from unittest to catch overread.

Original comment by fbarch...@chromium.org on 11 Oct 2012 at 2:49

GoogleCodeExporter commented 9 years ago

Original comment by fbarch...@chromium.org on 11 Oct 2012 at 2:49