Core dumps when using gr.firdes


#1

Hello,

I am having core dumps when using the taps generators in the gr.firdes
package. The core dumps happen when I give the functions invalid
arguments. Example:

gr.firdes.complex_band_pass(0, 0, 0, 0, 0)
terminate called after throwing an instance of ‘std::out_of_range’
what(): gr_firdes check failed: sampling_freq > 0
Aborted (core dumped)

Although I should obviously not be doing that: I am trying to add the
taps generating functions to the math expression parser in GRC. However,
if a user enters a bad argument, I should be able to catch the error,
but currently, the entire program will crash!

Help please,
-Josh B.


#2

Josh B. wrote:

taps generating functions to the math expression parser in GRC. However,
if a user enters a bad argument, I should be able to catch the error,
but currently, the entire program will crash!

This will need to be fixed in the SWIG wrapper(s) for gnuradio-core, to
have the check for these exceptions and pass them up to Python instead
of aborting. Please file a Trac bug.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com


#3

Johnathan C. wrote:

This will need to be fixed in the SWIG wrapper(s) for gnuradio-core, to
have the check for these exceptions and pass them up to Python instead
of aborting. Please file a Trac bug.

A trial fix for this was checked into the trunk this morning Please
update and let me know how it goes.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com


#4

Hello,

Despite the trial fix, I still get core dumps.

I decided to try other functions that are supposed to throw an error:
The gr.correlate_access_code_bb constructor is suppose to throw a
std::out_of_range when the length of the code is greater than 64: sure
enough, this crashes the python shell just as the firdes.

Is something wrong with swig? I am using SWIG Version 1.3.31 and trunk
r5754.

-Josh

— Example: —
gr.correlate_access_code_bb(“0000000000000000000000000000000000000000000000000000000000000000000000”,
1)
gr_correlate_access_code_bb: access_code is > 64 bits
terminate called after throwing an instance of ‘std::out_of_range’
what(): access_code is > 64 bits
Aborted (core dumped)