Forum: GNU Radio seg fault in volk_32f_s32f_multiply_32f_a_sse gnuradio v 3.6.1

Posted by ikjtel (Guest)
on 2012-08-27 14:01
(Received via mailing list)
At the moment it's easily reproducible. Same app runs under GR v3.3 with 
no trouble. Let me know if I can provide any more info - in particular, 
perhaps there's a special GDB command to dump the "xmm" register set?

Best Regards

Max
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(gdb) i stack
#0  0x0747ce98 in volk_32f_s32f_multiply_32f_a_sse () from 
/usr/local/lib/libvolk.so.0.0.0
#1  0x0191cd84 in gr_multiply_const_ff::work(int, std::vector<void 
const*, std::allocator<void const*> >&, std::vector<void*, 
std::allocator<void*> >&) () from 
/usr/local/lib/libgnuradio-core-3.6.1.so.0.0.0
#2  0x018afb57 in gr_sync_block::general_work(int, std::vector<int, 
std::allocator<int> >&, std::vector<void const*, std::allocator<void 
const*> >&, std::vector<void*, std::allocator<void*> >&) () from 
/usr/local/lib/libgnuradio-core-3.6.1.so.0.0.0
#3  0x01890bb5 in gr_block_executor::run_one_iteration() () from 
/usr/local/lib/libgnuradio-core-3.6.1.so.0.0.0
#4  0x018b2780 in 
gr_tpb_thread_body::gr_tpb_thread_body(boost::shared_ptr<gr_block>, int) 
() from /usr/local/lib/libgnuradio-core-3.6.1.so.0.0.0
#5  0x018abe36 in 
boost::detail::function::void_function_obj_invoker0<gruel::thread_body_wrapper<tpb_container>, 
void>::invoke(boost::detail::function::function_buffer&) () from 
/usr/local/lib/libgnuradio-core-3.6.1.so.0.0.0
#6  0x0466c732 in boost::detail::thread_data<boost::function0<void> 
>::run() () from /usr/local/lib/libgruel-3.6.1.so.0.0.0
#7  0x07fde029 in thread_proxy () from 
/usr/lib/libboost_thread.so.1.42.0
#8  0x00c26e99 in start_thread () from 
/lib/i386-linux-gnu/libpthread.so.0
#9  0x005f673e in clone () from /lib/i386-linux-gnu/libc.so.6
(gdb) x/10ib 0x0747ce98
=> 0x747ce98 <volk_32f_s32f_multiply_32f_a_sse+56>:   movaps 
(%ecx,%esi,1),%xmm0 0x747ce9c <volk_32f_s32f_multiply_32f_a_sse+60>: 
add    $0x1,%edi 0x747ce9f <volk_32f_s32f_multiply_32f_a_sse+63>:  mulps 
%xmm1,%xmm0 0x747cea2 <volk_32f_s32f_multiply_32f_a_sse+66>:   movaps 
%xmm0,(%eax,%esi,1) 0x747cea6 <volk_32f_s32f_multiply_32f_a_sse+70>: 
add    $0x10,%esi 0x747cea9 <volk_32f_s32f_multiply_32f_a_sse+73>:  cmp 
%edi,%edx 0x747ceab <volk_32f_s32f_multiply_32f_a_sse+75>:   ja 
0x747ce98 <volk_32f_s32f_multiply_32f_a_sse+56> 0x747cead 
<volk_32f_s32f_multiply_32f_a_sse+77>:  mov    %edx,%edi 0x747ceaf 
<volk_32f_s32f_multiply_32f_a_sse+79>:  shl    $0x4,%edi 0x747ceb2 
<volk_32f_s32f_multiply_32f_a_sse+82>:  add    %edi,%ecx
(gdb) i r
eax            0xb1974c08  -1315484664
ecx            0xb190ec08  -1315902456
edx            0xaf  175
ebx            0x19d9ff4  27107316
esp            0xaf00efe4  0xaf00efe4
ebp            0xaf00f008  0xaf00f008
esi            0x0  0
edi            0x0  0
eip            0x747ce98  0x747ce98 
<volk_32f_s32f_multiply_32f_a_sse+56>
eflags         0x210246  [ PF ZF IF RF ID ]
cs             0x73  115
ss             0x7b  123
ds             0x7b  123
es             0x7b  123
fs             0x0  0
gs             0x33  51
Posted by Tom Rondeau (Guest)
on 2012-09-01 18:10
(Received via mailing list)
On Fri, Aug 24, 2012 at 6:33 PM, ikjtel <ikj1234i@yahoo.com> wrote:
> At the moment it's easily reproducible.  Same app runs under GR v3.3 with no
> trouble. Let me know if I can provide any more info - in particular, perhaps
> there's a special GDB command to dump the "xmm" register set?
>
> Best Regards
>
> Max

Max,

Can you provide an example that's causing you problems? Also, what's
the output of cmake, specifically for when volk tests the different
SIMD types available? What's your processor and the output of 'cat
/proc/cpuinfo'?

The reason this doesn't cause a problem for you in 3.3 is because
that's pre-Volk. This looks like you're running SSE operations on a
system that doesn't support it.

Tom
Posted by ikjtel (Guest)
on 2012-09-04 04:38
(Received via mailing list)
> The reason this doesn't cause a problem for you in 3.3 is because
> that's pre-Volk. This looks like you're running SSE operations on a
> system that doesn't support it.

Hi Tom
I shall put together the full list of stuff you mentioned, but 3 quick 
things

1) the system apparently does support SSE (see below)
2) we have a few custom C++ blocks in the app, perhaps there's some rule 
we're breaking and so running afoul of the SSE instruction operand 
alignment restrictions (is this possible?)
3) the problem is happening in a relatively complex GR app 
[http://op25.osmocom.org/wiki/wiki/SignalScopePage , using audio-IF 
mode].

Both 2 and 3 point toward the need to try to reproduce the problem here 
with a simplified test app, finding the absolute minimum number of GR 
blocks needed to do so, and ruling out the possibility that's it's 
something we're doing wrong...

Thanks

Max
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~processor 
: 0
vendor_id : GenuineIntel
cpu family : 6
model  : 28
model name : Intel(R) Atom(TM) CPU N450 @ 1.66GHz
stepping : 10
cpu MHz  : 1000.000
cache size : 512 KB
physical id : 0
siblings : 2
core id  : 0
cpu cores : 1
apicid  : 0
initial apicid : 0
fdiv_bug : no
hlt_bug  : no
f00f_bug : no
coma_bug : no
fpu  : yes
fpu_exception : yes
cpuid level : 10
wp  : yes
flags  : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat 
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc 
arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 
cx16 xtpr pdcm movbe lahf_lm dts
bogomips : 3333.52
clflush size : 64
cache_alignment : 64
address sizes : 32 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model  : 28
model name : Intel(R) Atom(TM) CPU N450 @ 1.66GHz
stepping : 10
cpu MHz  : 1000.000
cache size : 512 KB
physical id : 0
siblings : 2
core id  : 0
cpu cores : 1
apicid  : 1
initial apicid : 1
fdiv_bug : no
hlt_bug  : no
f00f_bug : no
coma_bug : no
fpu  : yes
fpu_exception : yes
cpuid level : 10
wp  : yes
flags  : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat 
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc 
arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 
cx16 xtpr pdcm movbe lahf_lm dts
bogomips : 3332.92
clflush size : 64
cache_alignment : 64
address sizes : 32 bits physical, 48 bits virtual
power management:
Posted by Tom Rondeau (Guest)
on 2012-09-04 16:10
(Received via mailing list)
On Mon, Sep 3, 2012 at 10:36 PM, ikjtel <ikj1234i@yahoo.com> wrote:
>
>> The reason this doesn't cause a problem for you in 3.3 is because
>> that's pre-Volk. This looks like you're running SSE operations on a
>> system that doesn't support it.
>
> Hi Tom
> I shall put together the full list of stuff you mentioned, but 3 quick things
>
> 1) the system apparently does support SSE (see below)

Yes, looks like it. But it's an Atom, which might change things. I
know we had some issues on Atom's before, but I thought that we worked
them out. I'll be interested to see how cmake reports the architecture
checks for VOLK here.

> 2) we have a few custom C++ blocks in the app, perhaps there's some rule we're 
breaking and so running afoul of the SSE instruction operand alignment 
restrictions (is this possible?)
> 3) the problem is happening in a relatively complex GR app 
[http://op25.osmocom.org/wiki/wiki/SignalScopePage , using audio-IF mode].
>
> Both 2 and 3 point toward the need to try to reproduce the problem here with a 
simplified test app, finding the absolute minimum number of GR blocks needed to do 
so, and ruling out the possibility that's it's something we're doing wrong...
>
> Thanks
>
> Max

Thanks. Not sure what to make of that, yet. What happens if you just
have a sig_source_f->multiply_ff->null_sink?

Tom


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~processor
   : 0
Posted by ikjtel (Guest)
on 2012-09-04 22:04
(Received via mailing list)
> I'll be interested to see how cmake reports the architecture checks for VOLK 
here.


pasted below. Hopefully the mailers won't mangle, if so i'll post it to 
a web page and send a link.


> What happens if you just have a sig_source_f->multiply_ff->null_sink?

:-( It works perfectly, without any crashes whatsoever. Will have to try 
harder to isolate it ...

Max

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Script started on Tue 04 Sep 2012 03:49:30 PM EDT
~/tmp/gnuradio-3.6.1/build$ cmake ../
-- The CXX compiler identification is GNU
-- The C compiler identification is GNU
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Build type not specified: defaulting to release.
-- Found Git: /usr/bin/git
-- Performing Test HAVE_VISIBILITY_HIDDEN
-- Performing Test HAVE_VISIBILITY_HIDDEN - Success
-- Performing Test HAVE_WARN_SIGN_COMPARE
-- Performing Test HAVE_WARN_SIGN_COMPARE - Success
-- Performing Test HAVE_WARN_ALL
-- Performing Test HAVE_WARN_ALL - Success
-- Performing Test HAVE_WARN_NO_UNINITIALIZED
-- Performing Test HAVE_WARN_NO_UNINITIALIZED - Success
-- Found PythonLibs: /usr/lib/libpython2.7.so
-- Found SWIG: /usr/bin/swig (found version "1.3.40")
-- Minimum SWIG version required is 1.3.31
--
-- The build system will automatically enable all components.
-- Use -DENABLE_DEFAULT=OFF to disable components by default.
--
-- Configuring python-support support...
-- Dependency PYTHONLIBS_FOUND = TRUE
-- Dependency SWIG_FOUND = TRUE
-- Dependency SWIG_VERSION_CHECK = TRUE
-- Enabling python-support support.
-- Override with -DENABLE_PYTHON=ON/OFF
-- checking for module 'cppunit'
-- found cppunit, version 1.12.1
-- Found CPPUNIT: /usr/lib/libcppunit.so;dl
--
-- Configuring testing-support support...
-- Dependency CPPUNIT_FOUND = TRUE
-- Enabling testing-support support.
-- Override with -DENABLE_TESTING=ON/OFF
--
-- Configuring volk support...
-- Enabling volk support.
-- Override with -DENABLE_VOLK=ON/OFF
-- Found PythonInterp: /usr/bin/python2.7
--
-- Python checking for python >= 2.5
-- Python checking for python >= 2.5 - found
--
-- Python checking for Cheetah >= 2.0.0
-- Python checking for Cheetah >= 2.0.0 - found
-- Boost version: 1.42.0
-- Found the following Boost libraries:
-- unit_test_framework
-- checking for module 'orc-0.4 > 0.4.11'
-- package 'orc-0.4 > 0.4.11' not found
-- orc files (missing: ORC_LIBRARY ORC_INCLUDE_DIR ORCC_EXECUTABLE)
-- Looking for cpuid.h
-- Looking for cpuid.h - found
-- Looking for intrin.h
-- Looking for intrin.h - not found
-- Looking for fenv.h
-- Looking for fenv.h - found
-- Looking for dlfcn.h
-- Looking for dlfcn.h - found
-- Compiler name: GNU
-- x86* CPU detected
-- Performing Test have_maltivec
-- Performing Test have_maltivec - Failed
-- Performing Test have_mfpu_neon
-- Performing Test have_mfpu_neon - Failed
-- Performing Test have_mfloat_abi_softfp
-- Performing Test have_mfloat_abi_softfp - Failed
-- Performing Test have_funsafe_math_optimizations
-- Performing Test have_funsafe_math_optimizations - Success
-- Performing Test have_m32
-- Performing Test have_m32 - Success
-- Performing Test have_m64
-- Performing Test have_m64 - Failed
-- Performing Test have_m3dnow
-- Performing Test have_m3dnow - Success
-- Performing Test have_msse4_2
-- Performing Test have_msse4_2 - Success
-- Performing Test have_mpopcnt
-- Performing Test have_mpopcnt - Success
-- Performing Test have_mmmx
-- Performing Test have_mmmx - Success
-- Performing Test have_msse
-- Performing Test have_msse - Success
-- Performing Test have_msse2
-- Performing Test have_msse2 - Success
-- Performing Test have_msse3
-- Performing Test have_msse3 - Success
-- Performing Test have_mssse3
-- Performing Test have_mssse3 - Success
-- Performing Test have_msse4a
-- Performing Test have_msse4a - Success
-- Performing Test have_msse4_1
-- Performing Test have_msse4_1 - Success
-- Performing Test have_mavx
-- Performing Test have_mavx - Success
-- ORC support not found, Overruled arch orc
-- Check size of void*[8]
-- Check size of void*[8] - done
-- CPU width is 32 bits, Overruled arch 64
-- Available architectures: 
generic;32;3dnow;abm;popcount;mmx;sse;sse2;norc;sse3;ssse3;sse4_a;sse4_1;sse4_2;avx
-- Available machines: 
generic;sse2_32;sse3_32;ssse3_32;sse4_a_32;sse4_1_32;sse4_2_32;avx_32
-- Did not find liborc and orcc, disabling orc support...
-- Using install prefix: /usr/local
-- TRY_SHM_VMCIRCBUF set to ON.
-- Found Doxygen: /usr/bin/doxygen
-- Could NOT find Sphinx (missing: SPHINX_EXECUTABLE)
--
-- Configuring doxygen support...
-- Dependency DOXYGEN_FOUND = YES
-- Enabling doxygen support.
-- Override with -DENABLE_DOXYGEN=ON/OFF
--
-- Configuring sphinx support...
-- Dependency SPHINX_FOUND = FALSE
-- Disabling sphinx support.
-- Override with -DENABLE_SPHINX=ON/OFF
-- Boost version: 1.42.0
-- Found the following Boost libraries:
-- date_time
-- program_options
-- filesystem
-- system
-- thread
--
-- Configuring gruel support...
-- Dependency Boost_FOUND = TRUE
-- Dependency PYTHONINTERP_FOUND = TRUE
-- Enabling gruel support.
-- Override with -DENABLE_GRUEL=ON/OFF
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Looking for C++ include byteswap.h
-- Looking for C++ include byteswap.h - found
-- Looking for C++ include arpa/inet.h
-- Looking for C++ include arpa/inet.h - found
-- Looking for C++ include netinet/in.h
-- Looking for C++ include netinet/in.h - found
-- Looking for C++ include signal.h
-- Looking for C++ include signal.h - found
-- Looking for C++ include sched.h
-- Looking for C++ include sched.h - found
-- Performing Test HAVE_PTHREAD_SIGMASK
-- Performing Test HAVE_PTHREAD_SIGMASK - Success
-- Performing Test HAVE_PTHREAD_SETSCHEDPARAM
-- Performing Test HAVE_PTHREAD_SETSCHEDPARAM - Success
-- Performing Test HAVE_SCHED_SETSCHEDULER
-- Performing Test HAVE_SCHED_SETSCHEDULER - Success
-- checking for module 'fftw3f >= 3.0'
-- found fftw3f , version 3.2.2
-- Found FFTW3F: /usr/lib/libfftw3f.so
--
-- Configuring gnuradio-core support...
-- Dependency ENABLE_GRUEL = ON
-- Dependency ENABLE_VOLK = ON
-- Dependency Boost_FOUND = TRUE
-- Dependency FFTW3F_FOUND = TRUE
-- Dependency PYTHONINTERP_FOUND = TRUE
-- Enabling gnuradio-core support.
-- Override with -DENABLE_GR_CORE=ON/OFF
-- Looking for C++ include netdb.h
-- Looking for C++ include netdb.h - found
-- Looking for C++ include sys/time.h
-- Looking for C++ include sys/time.h - found
-- Looking for C++ include sys/select.h
-- Looking for C++ include sys/select.h - found
-- Looking for C++ include sys/socket.h
-- Looking for C++ include sys/socket.h - found
-- Looking for C++ include io.h
-- Looking for C++ include io.h - not found
-- Looking for C++ include sys/mman.h
-- Looking for C++ include sys/mman.h - found
-- Looking for C++ include sys/ipc.h
-- Looking for C++ include sys/ipc.h - found
-- Looking for C++ include sys/shm.h
-- Looking for C++ include sys/shm.h - found
-- Looking for C++ include netinet/in.h
-- Looking for C++ include netinet/in.h - found
-- Looking for C++ include arpa/inet.h
-- Looking for C++ include arpa/inet.h - found
-- Looking for C++ include byteswap.h
-- Looking for C++ include byteswap.h - found
-- Looking for C++ include linux/ppdev.h
-- Looking for C++ include linux/ppdev.h - found
-- Looking for C++ include dev/ppbus/ppi.h
-- Looking for C++ include dev/ppbus/ppi.h - not found
-- Looking for C++ include unistd.h
-- Looking for C++ include unistd.h - found
-- Looking for C++ include malloc.h
-- Looking for C++ include malloc.h - found
-- Performing Test HAVE_SNPRINTF
-- Performing Test HAVE_SNPRINTF - Success
-- Performing Test HAVE_SIGACTION
-- Performing Test HAVE_SIGACTION - Success
-- Performing Test HAVE_SELECT
-- Performing Test HAVE_SELECT - Success
-- Performing Test HAVE_SYSCONF
-- Performing Test HAVE_SYSCONF - Success
-- Performing Test HAVE_GETPAGESIZE
-- Performing Test HAVE_GETPAGESIZE - Success
-- Performing Test HAVE_SSLEEP
-- Performing Test HAVE_SSLEEP - Failed
-- Performing Test HAVE_NANOSLEEP
-- Performing Test HAVE_NANOSLEEP - Success
-- Performing Test HAVE_GETTIMEOFDAY
-- Performing Test HAVE_GETTIMEOFDAY - Success
-- Performing Test HAVE_POSIX_MEMALIGN
-- Performing Test HAVE_POSIX_MEMALIGN - Success
-- Performing Test HAVE_VALLOC
-- Performing Test HAVE_VALLOC - Success
-- Performing Test HAVE_CREATEFILEMAPPING
-- Performing Test HAVE_CREATEFILEMAPPING - Failed
-- Looking for C++ include windows.h
-- Looking for C++ include windows.h - not found
-- Performing Test HAVE_SHM_OPEN
-- Performing Test HAVE_SHM_OPEN - Success
-- Performing Test HAVE_SINCOS
-- Performing Test HAVE_SINCOS - Success
-- Performing Test HAVE_SINCOSF
-- Performing Test HAVE_SINCOSF - Success
-- Performing Test HAVE_SINF
-- Performing Test HAVE_SINF - Success
-- Performing Test HAVE_COSF
-- Performing Test HAVE_COSF - Success
-- Performing Test HAVE_MMAP
-- Performing Test HAVE_MMAP - Success
-- Check size of void*
-- Check size of void* - done
-- Loading build date Tue, 04 Sep 2012 19:50:21 into gr_constants...
-- Loading version 3.6.1 into gr_constants...
-- Looking for C++ include sys/resource.h
-- Looking for C++ include sys/resource.h - found
--
-- Python checking for python >= 2.5
-- Python checking for python >= 2.5 - found
--
-- Python checking for Cheetah >= 2.0.0
-- Python checking for Cheetah >= 2.0.0 - found
--
-- Python checking for lxml >= 1.3.6
-- Python checking for lxml >= 1.3.6 - found
--
-- Python checking for pygtk >= 2.10.0
-- Python checking for pygtk >= 2.10.0 - found
--
-- Python checking for numpy
-- Python checking for numpy - found
--
-- Configuring gnuradio-companion support...
-- Dependency ENABLE_GR_CORE = ON
-- Dependency ENABLE_PYTHON = ON
-- Dependency PYTHON_MIN_VER_FOUND = TRUE
-- Dependency CHEETAH_FOUND = TRUE
-- Dependency LXML_FOUND = TRUE
-- Dependency PYGTK_FOUND = TRUE
-- Dependency NUMPY_FOUND = TRUE
-- Enabling gnuradio-companion support.
-- Override with -DENABLE_GRC=ON/OFF
--
-- Configuring gr-fft support...
-- Dependency ENABLE_GRUEL = ON
-- Dependency ENABLE_VOLK = ON
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Dependency FFTW3F_FOUND = TRUE
-- Enabling gr-fft support.
-- Override with -DENABLE_GR_FFT=ON/OFF
--
-- Configuring gr-atsc support...
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Enabling gr-atsc support.
-- Override with -DENABLE_GR_ATSC=ON/OFF
--
-- Configuring gr-audio support...
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Enabling gr-audio support.
-- Override with -DENABLE_GR_AUDIO=ON/OFF
-- checking for module 'alsa'
-- found alsa, version 1.0.24.1
-- Found ALSA 1.0.24.1
-- checking for module 'jack'
-- package 'jack' not found
-- Looking for C++ include AudioUnit/AudioUnit.h
-- Looking for C++ include AudioUnit/AudioUnit.h - not found
-- Looking for C++ include AudioToolbox/AudioToolbox.h
-- Looking for C++ include AudioToolbox/AudioToolbox.h - not found
-- checking for module 'portaudio'
-- package 'portaudio' not found
-- Could NOT find PORTAUDIO (missing: PORTAUDIO_INCLUDE_DIRS 
PORTAUDIO_LIBRARIES)
-- checking for module 'comedilib'
-- package 'comedilib' not found
--
-- Configuring gr-comedi support...
-- Dependency COMEDI_FOUND =
-- Dependency LINUX = TRUE
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Disabling gr-comedi support.
-- Override with -DENABLE_GR_COMEDI=ON/OFF
--
-- Configuring gr-digital support...
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Enabling gr-digital support.
-- Override with -DENABLE_GR_DIGITAL=ON/OFF
--
-- Configuring gr-noaa support...
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Enabling gr-noaa support.
-- Override with -DENABLE_GR_NOAA=ON/OFF
--
-- Configuring gr-pager support...
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Enabling gr-pager support.
-- Override with -DENABLE_GR_PAGER=ON/OFF
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt-Version 4.7.2 (using /usr/bin/qmake)
-- Found Qwt: /usr/lib/libqwt-qt4.so
--
-- Python checking for PyQt4
-- Python checking for PyQt4 - found
--
-- Configuring gr-qtgui support...
-- Dependency Boost_FOUND = TRUE
-- Dependency QT4_FOUND = YES
-- Dependency QWT_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Dependency PYTHONLIBS_FOUND = TRUE
-- Dependency PYQT4_FOUND = TRUE
-- Enabling gr-qtgui support.
-- Override with -DENABLE_GR_QTGUI=ON/OFF
--
-- Configuring gr-trellis support...
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Dependency ENABLE_GR_DIGITAL = ON
-- Enabling gr-trellis support.
-- Override with -DENABLE_GR_TRELLIS=ON/OFF
-- checking for module 'uhd'
-- package 'uhd' not found
-- Could NOT find UHD (missing: UHD_LIBRARIES UHD_INCLUDE_DIRS)
--
-- Configuring gr-uhd support...
-- Dependency Boost_FOUND = TRUE
-- Dependency UHD_FOUND = FALSE
-- Dependency ENABLE_GR_CORE = ON
-- Disabling gr-uhd support.
-- Override with -DENABLE_GR_UHD=ON/OFF
-- checking for module 'shd'
-- package 'shd' not found
-- Could NOT find SHD (missing: SHD_LIBRARIES SHD_INCLUDE_DIRS)
--
-- Configuring gr-shd support...
-- Dependency Boost_FOUND = TRUE
-- Dependency SHD_FOUND = FALSE
-- Dependency ENABLE_GR_CORE = ON
-- Disabling gr-shd support.
-- Override with -DENABLE_GR_SHD=ON/OFF
--
-- Configuring gr-utils support...
-- Dependency ENABLE_GR_CORE = ON
-- Dependency ENABLE_PYTHON = ON
-- Enabling gr-utils support.
-- Override with -DENABLE_GR_UTILS=ON/OFF
-- Looking for include files CMAKE_HAVE_PTHREAD_H
-- Looking for include files CMAKE_HAVE_PTHREAD_H - found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
--
-- Configuring gr-video-sdl support...
-- Dependency SDL_FOUND = YES
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Enabling gr-video-sdl support.
-- Override with -DENABLE_GR_VIDEO_SDL=ON/OFF
--
-- Configuring gr-vocoder support...
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Enabling gr-vocoder support.
-- Override with -DENABLE_GR_VOCODER=ON/OFF
-- checking for module 'libusb-1.0'
-- package 'libusb-1.0' not found
-- libusb-1.0 not found.
--
-- Configuring gr-fcd support...
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Dependency ENABLE_GR_AUDIO = ON
-- Dependency LIBUSB_FOUND = FALSE
-- Disabling gr-fcd support.
-- Override with -DENABLE_GR_FCD=ON/OFF
-- checking for module 'gsl >= 1.10'
-- found gsl , version 1.14
--
-- Configuring gr-wavelet support...
-- Dependency Boost_FOUND = TRUE
-- Dependency ENABLE_GR_CORE = ON
-- Dependency GSL_FOUND = 1
-- Enabling gr-wavelet support.
-- Override with -DENABLE_GR_WAVELET=ON/OFF
--
-- Python checking for wx >= 2.8
-- Python checking for wx >= 2.8 - found
--
-- Python checking for numpy
-- Python checking for numpy - found
--
-- Configuring gr-wxgui support...
-- Dependency ENABLE_GR_CORE = ON
-- Dependency ENABLE_PYTHON = ON
-- Dependency NUMPY_FOUND = TRUE
-- Dependency WX_FOUND = TRUE
-- Enabling gr-wxgui support.
-- Override with -DENABLE_GR_WXGUI=ON/OFF
--
-- ######################################################
-- # Gnuradio enabled components
-- ######################################################
-- * python-support
-- * testing-support
-- * volk
-- * doxygen
-- * gruel
-- * gnuradio-core
-- * gnuradio-companion
-- * gr-fft
-- * gr-atsc
-- * gr-audio
-- * gr-digital
-- * gr-noaa
-- * gr-pager
-- * gr-qtgui
-- * gr-trellis
-- * gr-utils
-- * gr-video-sdl
-- * gr-vocoder
-- * gr-wavelet
-- * gr-wxgui
--
-- ######################################################
-- # Gnuradio disabled components
-- ######################################################
-- * sphinx
-- * gr-comedi
-- * gr-uhd
-- * gr-shd
-- * gr-fcd
--
-- Using install prefix: /usr/local
-- Building for version: 3.6.1 / 3.6.1
-- Configuring done
-- Generating done
-- Build files have been written to: /home/mhp/tmp/gnuradio-3.6.1/build
Posted by ikjtel (Guest)
on 2012-09-05 03:02
(Received via mailing list)
> Yes, looks like it. But it's an Atom, which might change things. I

> know we had some issues on Atom's before, but I thought that we worked
> them out. I'll be interested to see how cmake reports the architecture
> checks for VOLK here.

Hi Tom

I've made some further progress, and this may be premature, but I'll go 
so far as to say we can rule this out entirely.

Here's a strawman theory - criticism of the theory is invited, shooting 
it down would be welcomed ; )

Our app uses lots of disconnect() and connect() calls because our 
appetite for widgets is bigger than the CPU available. Also, since the 
widgets are tab-selectable there is only one widget visible at a time. 
So when the user hits a tab we call disconnect and connect (surrounded 
by lock() / unlock() of course) in order to dynamically create a flow 
graph that connects up all the elements needed by that tab (and 
disconnects the elements, filters, demods, FFT's and other blocks that 
aren't needed by this tab, to conserve CPU.

The theory is that this is "messing up" the boundary alignments of the 
operands to the SSE instructions, making them no longer properly 
aligned, resulting in a GPF.

Here's the minimal python app , it seg faults in volk 100% reliably for 
me. If the call to shuffle() is removed, the script does not crash.

Max

p.s. kindly let me know if this code isn't properly machine-readable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/usr/bin/env python
import math
import time
from gnuradio import gr, gru, audio, eng_notation, blks2, optfir

class app_top_block(gr.top_block):
 def __init__(self):
 gr.top_block.__init__(self, "mhp")

 self.source = gr.sig_source_f(48000, gr.GR_TRI_WAVE, 1.0, 1.0, 0)
 self.amp = gr.multiply_const_ff(65.0)
 self.sink = gr.null_sink(gr.sizeof_float)

 self.connect(self.source, self.amp, self.sink)
 self.amp_connected = True

 def shuffle(self):
 self.lock()
 if self.amp_connected:
 self.disconnect(self.source, self.amp, self.sink)
 self.connect(self.source, self.sink)
 else:
 self.disconnect(self.source, self.sink)
 self.connect(self.source, self.amp, self.sink)
 self.amp_connected = not self.amp_connected
 self.unlock()

if __name__ == "__main__":
 tb = app_top_block()
 tb.start()
 while True:
 time.sleep(0.1)
 tb.shuffle()
Posted by Tom Rondeau (Guest)
on 2012-09-05 16:07
(Received via mailing list)
On Tue, Sep 4, 2012 at 9:01 PM, ikjtel <ikj1234i@yahoo.com> wrote:
> I've made some further progress, and this may be premature, but I'll go so far 
as to say we can rule this out entirely.
>
> Here's a strawman theory - criticism of the theory is invited, shooting it down 
would be welcomed ; )
>
> Our app uses lots of disconnect() and connect() calls because our appetite for 
widgets is bigger than the CPU available.  Also, since the widgets are 
tab-selectable there is only one widget visible at a time.  So when the user hits 
a tab we call disconnect and connect (surrounded by lock() / unlock() of course) 
in order to dynamically create a flow graph that connects up all the elements 
needed by that tab (and disconnects the elements, filters, demods, FFT's and other 
blocks that aren't needed by this tab, to conserve CPU.
>
> The theory is that this is "messing up" the boundary alignments of the operands 
to the SSE instructions, making them no longer properly aligned, resulting in a 
GPF.
>
> Here's the minimal python app , it seg faults in volk 100% reliably for me.  If 
the call to shuffle() is removed, the script does not crash.
>
> Max

Max,

That's not a bad theory as I've run into the same situation before. I
had a fix for that, though, back before the release of 3.6.0. It's
possible that it's more complicated, though. I'll use your script to
see if I can do more to figure it out.

Tom
Posted by Tom Rondeau (Guest)
on 2012-10-03 21:55
(Received via mailing list)
On Wed, Sep 5, 2012 at 10:05 AM, Tom Rondeau <tom@trondeau.com> wrote:
>>
>> Max
>
>>
>>             self.disconnect(self.source, self.amp, self.sink)
>>     while True:
>>         time.sleep(0.1)
>>         tb.shuffle()
>>

Max,

I believe I have fixed your problem. Check out the latest master
branch (it's commit 77035b5d188be9e5dcd6731b1a58a4ce47451bde).

I was using your demo code that you posted here as a test, and it's
now working fine for me now.

Tom
Posted by ikjtel (Guest)
on 2012-10-04 17:03
(Received via mailing list)
>

> I believe I have fixed your problem. Check out the latest master
> branch (it's commit 77035b5d188be9e5dcd6731b1a58a4ce47451bde).
>
> I was using your demo code that you posted here as a test, and it's
> now working fine for me now.
>
> Tom

cool, I did a build from the git sources and so far it's solid when 
using the real-world app! Thanks

Best Regards

Max
Posted by Tom Rondeau (Guest)
on 2012-10-04 17:58
(Received via mailing list)
On Thu, Oct 4, 2012 at 11:02 AM, ikjtel <ikj1234i@yahoo.com> wrote:
> cool, I did a build from the git sources and so far it's solid when using
> the real-world app!  Thanks
>
> Best Regards
>
> Max

Great!

Tom
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.