=================================================================
==26495==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000004140 at pc 0x000000530bb9 bp 0x7ffc8eedd770 sp 0x7ffc8eedd768
READ of size 4 at 0x602000004140 thread T0
#0 0x530bb8 in Model::uv(int, int) /home/fouzhe/my_fuzz/tinyrenderer_test/tinyrenderer/model.cpp:96:16
#1 0x542798 in Shader::vertex(int, int) /home/fouzhe/my_fuzz/tinyrenderer_test/tinyrenderer/main.cpp:26:44
#2 0x54146b in main /home/fouzhe/my_fuzz/tinyrenderer_test/tinyrenderer/main.cpp:82:24
#3 0x7f1ec386e82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
#4 0x41c098 in _start (/home/fouzhe/my_fuzz/tinyrenderer_test/tinyrenderer/main+0x41c098)
0x602000004140 is located 4 bytes to the right of 12-byte region [0x602000004130,0x60200000413c)
allocated by thread T0 here:
#0 0x517d58 in operator new(unsigned long) /home/fouzhe/llvm/llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:92
#1 0x5387e5 in __gnu_cxx::new_allocator<vec<3ul, int> >::allocate(unsigned long, void const*) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/ext/new_allocator.h:104:27
#2 0x53878b in __gnu_cxx::__alloc_traits<std::allocator<vec<3ul, int> > >::allocate(std::allocator<vec<3ul, int> >&, unsigned long) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/ext/alloc_traits.h:182:18
#3 0x538452 in std::_Vector_base<vec<3ul, int>, std::allocator<vec<3ul, int> > >::_M_allocate(unsigned long) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_vector.h:170:20
#4 0x53a36e in std::_Vector_base<vec<3ul, int>, std::allocator<vec<3ul, int> > >::_M_create_storage(unsigned long) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_vector.h:185:33
#5 0x539bb4 in std::_Vector_base<vec<3ul, int>, std::allocator<vec<3ul, int> > >::_Vector_base(unsigned long, std::allocator<vec<3ul, int> > const&) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_vector.h:136:9
#6 0x5398df in std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >::vector(std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > const&) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_vector.h:319:9
#7 0x53e337 in void std::_Construct<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > >(std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > const&) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_construct.h:83:38
#8 0x53e268 in std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >* std::__uninitialized_copy<false>::__uninit_copy<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*>(std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_uninitialized.h:75:3
#9 0x53e218 in std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >* std::uninitialized_copy<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*>(std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_uninitialized.h:123:14
#10 0x53e1e8 in std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >* std::__uninitialized_copy_a<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > >(std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::allocator<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > >&) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_uninitialized.h:281:14
#11 0x53bdcc in std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >* std::__uninitialized_move_if_noexcept_a<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::allocator<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > > >(std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::allocator<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > >&) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_uninitialized.h:302:14
#12 0x53906b in std::vector<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >, std::allocator<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > > >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >*, std::vector<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >, std::allocator<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > > > >, std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > const&) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/vector.tcc:371:5
#13 0x5322b8 in std::vector<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > >, std::allocator<std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > > >::push_back(std::vector<vec<3ul, int>, std::allocator<vec<3ul, int> > > const&) /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_vector.h:925:4
#14 0x52e590 in Model::Model(char const*) /home/fouzhe/my_fuzz/tinyrenderer_test/tinyrenderer/model.cpp:38:20
#15 0x54133c in main /home/fouzhe/my_fuzz/tinyrenderer_test/tinyrenderer/main.cpp:78:21
#16 0x7f1ec386e82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
SUMMARY: AddressSanitizer: heap-buffer-overflow /home/fouzhe/my_fuzz/tinyrenderer_test/tinyrenderer/model.cpp:96:16 in Model::uv(int, int)
Shadow bytes around the buggy address:
0x0c047fff87d0: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x0c047fff87e0: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x0c047fff87f0: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x0c047fff8800: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x0c047fff8810: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
=>0x0c047fff8820: fa fa fd fd fa fa 00 04[fa]fa fd fd fa fa fd fd
0x0c047fff8830: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x0c047fff8840: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x0c047fff8850: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x0c047fff8860: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
0x0c047fff8870: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==26495==ABORTING