discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] Possible diagnosis for issue 520, hier_block2::discon


From: Kevin Reid
Subject: [Discuss-gnuradio] Possible diagnosis for issue 520, hier_block2::disconnect_all() misbehavior
Date: Sat, 17 Aug 2013 09:33:51 -0700

(I would have sent this as a comment on the issue tracker, but creating an 
account didn't seem to give me permission to comment.)


I've been using GNU Radio (strictly via Python) and met what seems to be the 
already-reported issue <http://gnuradio.org/redmine/issues/520>, where a 
hier_block2 will misbehave after calling disconnect_all().

Specifically, according to the exceptions seen from Python, it forgets that it 
has any inputs or outputs and rejects attempts to connect to them; for example, 
"output port 0 out of range for throttle(2)" resulting from 
self.connect(throttle, self).

I took a look at the code, and I found this suspicious bit in 
hier_block2_detail.cc:

  void
  hier_block2_detail::disconnect_all()
  {
    d_fg->clear();
    d_blocks.clear();
    d_inputs.clear();
    d_outputs.clear();
  }

I have very little C++ experience, but if I understand correctly, the last two 
lines will cause the input and output port vectors to have length 0, which 
would explain the observed behavior. There does not seem to be any code which 
increases the size of the vectors again.

If this is so, the fix would be to reset each element to the unset value 
individually rather than removing elements. (I don't know how to write that in 
idiomatic C++.)

I hope someone who has a working GNU Radio development environment (I've tried 
and failed, which is an unrelated problem) can try this fix.

-- 
Kevin Reid                                  <http://switchb.org/kpreid/>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]