drmpeg / gr-paint

An OFDM Spectrum Painter for GNU Radio
GNU General Public License v3.0
133 stars 25 forks source link

Fix buffer overflow and broken YML #19

Closed argilo closed 1 year ago

argilo commented 1 year ago

gr-paint has the same bugs as were fixed in https://github.com/gnuradio/gnuradio/pull/6346:

After these fixes, the external random input works, and the buffer overrun is gone.

Valgrind report:

==410619== Thread 31 paint_bc1:
==410619== Invalid read of size 8
==410619==    at 0x4DAB0902: gr::paint::paint_bc_impl::general_work(int, std::vector<int, std::allocator<int> >&, std::vector<void const*, std::allocator<void const*> >&, std::vector<void*, std::allocator<void*> >&) (paint_bc_impl.cc:108)
==410619==    by 0x610BBDA: gr::block_executor::run_one_iteration() (block_executor.cc:623)
==410619==    by 0x61711DA: gr::tpb_thread_body::tpb_thread_body(std::shared_ptr<gr::block>, std::shared_ptr<boost::barrier>, int) (tpb_thread_body.cc:94)
==410619==    by 0x6159909: operator() (scheduler_tpb.cc:38)
==410619==    by 0x6159909: operator() (thread_body_wrapper.h:49)
==410619==    by 0x6159909: __invoke_impl<void, gr::thread::thread_body_wrapper<gr::tpb_container>&> (invoke.h:61)
==410619==    by 0x6159909: __invoke_r<void, gr::thread::thread_body_wrapper<gr::tpb_container>&> (invoke.h:111)
==410619==    by 0x6159909: std::_Function_handler<void (), gr::thread::thread_body_wrapper<gr::tpb_container> >::_M_invoke(std::_Any_data const&) (std_function.h:290)
==410619==    by 0x688A0CA: ??? (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.74.0)
==410619==    by 0x4A3FB42: start_thread (pthread_create.c:442)
==410619==    by 0x4AD0BB3: clone (clone.S:100)
==410619==  Address 0x4b5e15b8 is 0 bytes after a block of size 8 alloc'd
==410619==    at 0x4849013: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==410619==    by 0x610DEBA: allocate (new_allocator.h:127)
==410619==    by 0x610DEBA: allocate (alloc_traits.h:464)
==410619==    by 0x610DEBA: _M_allocate (stl_vector.h:346)
==410619==    by 0x610DEBA: std::vector<void const*, std::allocator<void const*> >::_M_default_append(unsigned long) (vector.tcc:635)
==410619==    by 0x610BAB3: resize (stl_vector.h:940)
==410619==    by 0x610BAB3: gr::block_executor::run_one_iteration() (block_executor.cc:409)
==410619==    by 0x61711DA: gr::tpb_thread_body::tpb_thread_body(std::shared_ptr<gr::block>, std::shared_ptr<boost::barrier>, int) (tpb_thread_body.cc:94)
==410619==    by 0x6159909: operator() (scheduler_tpb.cc:38)
==410619==    by 0x6159909: operator() (thread_body_wrapper.h:49)
==410619==    by 0x6159909: __invoke_impl<void, gr::thread::thread_body_wrapper<gr::tpb_container>&> (invoke.h:61)
==410619==    by 0x6159909: __invoke_r<void, gr::thread::thread_body_wrapper<gr::tpb_container>&> (invoke.h:111)
==410619==    by 0x6159909: std::_Function_handler<void (), gr::thread::thread_body_wrapper<gr::tpb_container> >::_M_invoke(std::_Any_data const&) (std_function.h:290)
==410619==    by 0x688A0CA: ??? (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.74.0)
==410619==    by 0x4A3FB42: start_thread (pthread_create.c:442)
==410619==    by 0x4AD0BB3: clone (clone.S:100)