Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path with GNU Radio version 11001

2009-05-19 Thread Ling Huang

sorry for before attachments. maybe those infomations are nonsensed. I dig
gdb and do some homework, find out that the backtrace should be these:
I did set message type=1 but there is still a thread in message. How can I
get rid of these threads that can't quit?
-gdb thread apply all backtrace
after tb.wait()---
 Thread 3 (Thread 0xb59e1b90 (LWP 11153)):
#0  0xb80b7430 in __kernel_vsyscall ()
#1  0xb8071075 in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb7b842ab in omni_condition::wait (this=0x912ae74) at posix.cc:152
#3  0xb7cfc0b3 in gr_msg_queue::delete_head (this=0x912ae58)
at gr_msg_queue.cc:81
#4  0xb7cce6bc in gr_message_source::work (this=0x912ad80, 
noutput_items=32768, input_ite...@0xb59e12f8, output_ite...@0xb59e1318)
at gr_message_source.cc:96
#5  0xb7d0437a in gr_sync_block::general_work (this=0x912ad80, 
noutput_items=32768, ninput_ite...@0xb59e12ec, input_ite...@0xb59e12f8, 
output_ite...@0xb59e1318) at gr_sync_block.cc:64
#6  0xb7ceef76 in gr_block_executor::run_one_iteration (this=0xb59e12d4)
at gr_block_executor.cc:298
#7  0xb7d07267 in gr_tpb_thread_body (this=0xb59e12d4, block=
{px = 0xb59e1324, pn = {pi_ = 0x0}}) at gr_tpb_thread_body.cc:40
#8  0xb7d0151a in
boost::detail::function::void_function_obj_invoker0gruel::thread_body_wrappertpb_container,
void::invoke (function_obj_p...@0x912d558)
at gr_scheduler_tpb.cc:42
#9  0xb7b7bffc in boost::function0void,
std::allocatorboost::function_base ::operator() (this=0x912d554)
at /usr/include/boost/function/function_template.hpp:825
#10 0xb7b7c152 in boost::thread::thread_databoost::function0void,
std::allocatorboost::function_base  ::run (this=0x912d498)
at /usr/include/boost/thread/pthread/thread.hpp:130
#11 0xb7b699c2 in thread_proxy () from
/usr/lib/libboost_thread-mt-d.so.1.35.0
#12 0xb806d50f in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#13 0xb7fbba0e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 2 (Thread 0xb27fbb90 (LWP 11159)):
#0  0xb80b7430 in __kernel_vsyscall ()
#1  0xb8071075 in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb7d07e17 in boost::condition_variable::wait (this=0x912d4c8, 
m...@0xb27fa730)
at /usr/include/boost/thread/pthread/condition_variable.hpp:35
#3  0xb7b6a1f2 in boost::thread::join ()
   from /usr/lib/libboost_thread-mt-d.so.1.35.0
#4  0xb7b7b223 in gruel::thread_group::join_all (this=0x912d0fc)
at thread_group.cc:78
#5  0xb7cff4a0 in gr_scheduler_tpb::wait (this=0x912d0f8)
at gr_scheduler_tpb.cc:94
#6  0xb7d057c9 in gr_top_block_impl::wait (this=0x910de48)
at gr_top_block_impl.cc:124
#7  0xb7d05080 in gr_top_block::wait (this=0x90e9268) at gr_top_block.cc:71
#8  0xb7d833af in top_block_wait_unlocked (r=
{px = 0xb27fa80c, pn = {pi_ = 0xb27fa828}})
at gnuradio_swig_py_runtime.cc:4865
#9  0xb7d8d4d6 in _wrap_top_block_wait_unlocked (args=0xb5a9118c, 
kwargs=0xb5a9b68c) at gnuradio_swig_py_runtime.cc:15264
#10 0x0805d867 in PyObject_Call ()
#11 0x080cd502 in PyEval_EvalFrameEx ()
#12 0x080d0345 in PyEval_EvalCodeEx ()
#13 0x080ce728 in PyEval_EvalFrameEx ()
#14 0x080cfbf5 in PyEval_EvalFrameEx ()
#15 0x080cfbf5 in PyEval_EvalFrameEx ()
#16 0x080d0345 in PyEval_EvalCodeEx ()
#17 0x08117891 in ?? ()
#18 0x0805d867 in PyObject_Call ()
#19 0x08063a7a in ?? ()
#20 0x0805d867 in PyObject_Call ()
#21 0x080c850c in PyEval_CallObjectWithKeywords ()
#22 0x080f9e68 in ?? ()
#23 0xb806d50f in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#24 0xb7fbba0e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 1 (Thread 0xb7ed98c0 (LWP 11152)):
#0  0xb80b7430 in __kernel_vsyscall ()
#1  0xb7fb3df1 in select () from /lib/tls/i686/cmov/libc.so.6
#2  0xb8093bc9 in ?? () from /usr/lib/python2.5/lib-dynload/time.so
#3  0x080cea39 in PyEval_EvalFrameEx ()
#4  0x080d0345 in PyEval_EvalCodeEx ()
#5  0x080ce728 in PyEval_EvalFrameEx ()
#6  0x080d0345 in PyEval_EvalCodeEx ()
#7  0x080ce728 in PyEval_EvalFrameEx ()
#8  0x080cfbf5 in PyEval_EvalFrameEx ()
#9  0x080cfbf5 in PyEval_EvalFrameEx ()
#10 0x080cfbf5 in PyEval_EvalFrameEx ()
#11 0x080d0345 in PyEval_EvalCodeEx ()
#12 0x080d0557 in PyEval_EvalCode ()
#13 0x080edf8f in PyRun_FileExFlags ()
#14 0x080ee25a in PyRun_SimpleFileExFlags ()
#15 0x080595e7 in Py_Main ()
#16 0x08058962 in main ()

-- 
View this message in context: 
http://www.nabble.com/Can%27t-stop-the-top_block-which-contain-transmit_path-with-GNU-Radio-version-11001-tp23569318p23611034.html
Sent from the GnuRadio mailing list archive at Nabble.com.



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path with GNU Radio version 11001

2009-05-19 Thread Ling Huang

actually, the code is hanging in the gr_message. To stop the message, not to
set in the pkt.py, but to set send_pkt(eof=True) to stop the message thread.
It now work good.
Thank Eric!
-- 
View this message in context: 
http://www.nabble.com/Can%27t-stop-the-top_block-which-contain-transmit_path-with-GNU-Radio-version-11001-tp23569318p23628077.html
Sent from the GnuRadio mailing list archive at Nabble.com.



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path with GNU Radio version 11001

2009-05-18 Thread Eric Blossom
On Sun, May 17, 2009 at 07:34:16PM -0700, Ling Huang wrote:
 
 
  To get it to stop, send it a message with
 type=1.  The message source will indicate that it is done and the flow
 graph will terminate.
 
 
 I set transmit path message with type = 1, but it still not work, it hang in
 wait() either.
 
 Will the USRP block the system?

No.

You can find out where it's hung by running gdb.

Eric


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path with GNU Radio version 11001

2009-05-18 Thread Ling Huang

sorry, I'm not familiar with gdb, I can't get many useful infomation from
that. 
The topblock start 6 threads (exept the mainloop) . After tb.stop(), five
threads has exited, but leaving one. 
Here is the gdb infomation after tb.stop()
gdb-
(gdb) bt
#0  0xb7f87430 in __kernel_vsyscall ()
#1  0xb7f41075 in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb7bd7e17 in boost::condition_variable::wait (this=0x97285f0, 
m...@0xbff885b0)
at /usr/include/boost/thread/pthread/condition_variable.hpp:35
#3  0xb7a3a1f2 in boost::thread::join ()
   from /usr/lib/libboost_thread-mt-d.so.1.35.0
#4  0xb7a4b223 in gruel::thread_group::join_all (this=0x9728224)
at thread_group.cc:78
#5  0xb7bcf4a0 in gr_scheduler_tpb::wait (this=0x9728220)
at gr_scheduler_tpb.cc:94
#6  0xb7bd57c9 in gr_top_block_impl::wait (this=0x9684a18)
at gr_top_block_impl.cc:124
#7  0xb7bd5080 in gr_top_block::wait (this=0x96aab50) at gr_top_block.cc:71
#8  0xb7bd5168 in ~gr_top_block (this=0x96aab50) at gr_top_block.cc:51
#9  0xb7c6fc58 in boost::detail::sp_counted_impl_pgr_hier_block2::dispose
(
this=0x97095c0) at /usr/include/boost/checked_delete.hpp:34
#10 0xb7c5bd30 in _wrap_delete_gr_top_block_sptr (args=0xb595ea6c)
at /usr/include/boost/detail/sp_counted_base_gcc_x86.hpp:145
#11 0x08062646 in PyObject_CallFunctionObjArgs ()
#12 0xb7c471b9 in PySwigObject_dealloc (v=0xb5b9de60)
at gnuradio_swig_py_runtime.cc:1452
#13 0x08088e54 in ?? ()
#14 0x0809ff8b in ?? ()
#15 0x08088e54 in ?? ()
#16 0x0809ff8b in ?? ()
#17 0x081161cf in ?? ()
#18 0x080cfc13 in PyEval_EvalFrameEx ()
#19 0x080d0345 in PyEval_EvalCodeEx ()
#20 0x080d0557 in PyEval_EvalCode ()
#21 0x080edf8f in PyRun_FileExFlags ()
#22 0x080ee25a in PyRun_SimpleFileExFlags ()
#23 0x080595e7 in Py_Main ()
#24 0x08058962 in main ()

Eric Blossom wrote:
 
 
 No.
 
 You can find out where it's hung by running gdb.
 
 Eric
 
 
 
 

-- 
View this message in context: 
http://www.nabble.com/Can%27t-stop-the-top_block-which-contain-transmit_path-with-GNU-Radio-version-11001-tp23569318p23608703.html
Sent from the GnuRadio mailing list archive at Nabble.com.



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path with GNU Radio version 11001

2009-05-18 Thread Ling Huang

And here is the gdb after tb.wait()
---gdb
wait---
#0  0xb7f1f430 in __kernel_vsyscall ()
#1  0xb7e1bdf1 in select () from /lib/tls/i686/cmov/libc.so.6
#2  0xb7efbbc9 in ?? () from /usr/lib/python2.5/lib-dynload/time.so
#3  0x080cea39 in PyEval_EvalFrameEx ()
#4  0x080d0345 in PyEval_EvalCodeEx ()
#5  0x080ce728 in PyEval_EvalFrameEx ()
#6  0x080d0345 in PyEval_EvalCodeEx ()
#7  0x080ce728 in PyEval_EvalFrameEx ()
#8  0x080cfbf5 in PyEval_EvalFrameEx ()
#9  0x080cfbf5 in PyEval_EvalFrameEx ()
#10 0x080cfbf5 in PyEval_EvalFrameEx ()
#11 0x080d0345 in PyEval_EvalCodeEx ()
#12 0x080d0557 in PyEval_EvalCode ()
#13 0x080edf8f in PyRun_FileExFlags ()
#14 0x080ee25a in PyRun_SimpleFileExFlags ()
#15 0x080595e7 in Py_Main ()
#16 0x08058962 in main ()

-- 
View this message in context: 
http://www.nabble.com/Can%27t-stop-the-top_block-which-contain-transmit_path-with-GNU-Radio-version-11001-tp23569318p23608871.html
Sent from the GnuRadio mailing list archive at Nabble.com.



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path with GNU Radio version 11001

2009-05-17 Thread Ling Huang



 To get it to stop, send it a message with
type=1.  The message source will indicate that it is done and the flow
graph will terminate.



I set transmit path message with type = 1, but it still not work, it hang in
wait() either.

Will the USRP block the system?
-- 
View this message in context: 
http://www.nabble.com/Can%27t-stop-the-top_block-which-contain-transmit_path-with-GNU-Radio-version-11001-tp23569318p23590147.html
Sent from the GnuRadio mailing list archive at Nabble.com.



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path with GNU Radio version 11001

2009-05-16 Thread Eric Blossom
On Fri, May 15, 2009 at 05:51:30PM -0700, Ling Huang wrote:
 
 sorry for attaching this again. 
 I use UBUNTU 9.04 + gnuradio 11001 and UBUNTU 8.10 +gnuradio 10853 got the
 same problem.
 
 I modify the gnuradio-examples/python/digital codes for some experiences. In
 one case I want to stop the running flow graph(top block), and then to start
 a new connect. I do it well in stop the receive_path connect. But I just
 can't stop the top block contain a transmit_path. If I stop the top block,
 and wait, it hang in the tb.wait. 
 I seem not express well. To make it simple let's see: 
 class my_topblock(gr.top_block) 
 def __init__(self): 
  self.trans=transmit_path(...) 
  self.connect(self.trans) 
  
 
 tb.start() 
 tb.stop() 
 tb.wait() # IT HANG IN HERE 
 ... 
 tb.start() 
 
 I made a simple test code to test stopping the top block , please test it to
 see what's the problem. 

Some block is most likely blocked in a system call.  I'm guessing that
the transmit path is hung in gr.message_source waiting for a message
that's never coming.  To get it to stop, send it a message with
type=1.  The message source will indicate that it is done and the flow
graph will terminate.

Eric


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


[Discuss-gnuradio] Can't stop the top_block which contain transmit_path

2009-05-15 Thread Ling Huang

Hi, all
I modify the gnuradio-examples/python/digital codes for some experiences. In
one case I want to stop the running flow graph(top block), and then to start
a new connect. I do it well in stop the receive_path connect. But I just
can't stop the top block contain a transmit_path. If I stop the top block,
and wait, it hang in the tb.wait.
I seem not express well. To make it simple let's see:
class my_topblock(gr.top_block)
def __init__(self):
 self.trans=transmit_path(...)
 self.connect(self.trans)


tb.start()
tb.stop()
tb.wait() # IT HANG IN HERE
...
tb.start()

I made a simple test code to test stopping the top block , please test it to
see what's the problem.
---code
#!/usr/bin/env python

from gnuradio import gr, gru, modulation_utils
from gnuradio import eng_notation
from gnuradio.eng_option import eng_option
from optparse import OptionParser
import random, time, struct, sys

# from current dir
from transmit_path import transmit_path
import fusb_options

class my_top_block(gr.top_block):

def __init__(self,mod_class,options):
gr.top_block.__init__(self)
self.txpath = transmit_path(mod_class, options)
self.connect(self.txpath);

def main():
mods = modulation_utils.type_1_mods()
parser = OptionParser(option_class=eng_option,
conflict_handler=resolve)
expert_grp = parser.add_option_group(Expert)
parser.add_option(-m, --modulation, type=choice,
choices=mods.keys(),
  default='gmsk',
  help=Select modulation from: %s [default=%%default]%
(', '.join(mods.keys()),))  
transmit_path.add_options(parser, expert_grp)
for mod in mods.values():
mod.add_options(expert_grp)
r = gr.enable_realtime_scheduling()
fusb_options.add_options(expert_grp)
(options, args) = parser.parse_args ()

tb=my_top_block(mods[options.modulation], options)
  
tb.start()
tb.stop()
print afater stop
tb.wait()
print wait done
tb.start()
print start again

if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass

-- 
View this message in context: 
http://www.nabble.com/Can%27t-stop-the-top_block-which-contain-transmit_path-tp23555109p23555109.html
Sent from the GnuRadio mailing list archive at Nabble.com.



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path

2009-05-15 Thread Eric Blossom
On Fri, May 15, 2009 at 12:55:20AM -0700, Ling Huang wrote:
 
 Hi, all
 I modify the gnuradio-examples/python/digital codes for some experiences. In
 one case I want to stop the running flow graph(top block), and then to start
 a new connect. I do it well in stop the receive_path connect. But I just
 can't stop the top block contain a transmit_path. If I stop the top block,
 and wait, it hang in the tb.wait.
 I seem not express well. To make it simple let's see:
 class my_topblock(gr.top_block)
 def __init__(self):
  self.trans=transmit_path(...)
  self.connect(self.trans)
 
 
 tb.start()
 tb.stop()
 tb.wait() # IT HANG IN HERE
 ...
 tb.start()
 
 I made a simple test code to test stopping the top block , please test it to
 see what's the problem.

What version of GNU Radio are you using?

We fixed a problem in the trunk about a month ago that could be
related to this.

Eric


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path

2009-05-15 Thread Ling Huang



What version of GNU Radio are you using?
my GNU Radio version is 10853

-- 
View this message in context: 
http://www.nabble.com/Can%27t-stop-the-top_block-which-contain-transmit_path-tp23555109p23557528.html
Sent from the GnuRadio mailing list archive at Nabble.com.



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] Can't stop the top_block which contain transmit_path

2009-05-15 Thread Ling Huang

Eric,
would you please tell me what cause tb.wait() hanging, where is this bug
from?
I have install the newest version of GNU Radio, but the problem is still the
same.

Eric Blossom wrote:
 
 On Fri, May 15, 2009 at 12:55:20AM -0700, Ling Huang wrote:
 
 Hi, all
 I modify the gnuradio-examples/python/digital codes for some experiences.
 In
 one case I want to stop the running flow graph(top block), and then to
 start
 a new connect. I do it well in stop the receive_path connect. But I just
 can't stop the top block contain a transmit_path. If I stop the top
 block,
 and wait, it hang in the tb.wait.
 I seem not express well. To make it simple let's see:
 class my_topblock(gr.top_block)
 def __init__(self):
  self.trans=transmit_path(...)
  self.connect(self.trans)
 
 
 tb.start()
 tb.stop()
 tb.wait() # IT HANG IN HERE
 ...
 tb.start()
 
 I made a simple test code to test stopping the top block , please test it
 to
 see what's the problem.
 
 What version of GNU Radio are you using?
 
 We fixed a problem in the trunk about a month ago that could be
 related to this.
 
 Eric
 
 
 ___
 Discuss-gnuradio mailing list
 Discuss-gnuradio@gnu.org
 http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
 
 

-- 
View this message in context: 
http://www.nabble.com/Can%27t-stop-the-top_block-which-contain-transmit_path-tp23555109p23562707.html
Sent from the GnuRadio mailing list archive at Nabble.com.



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


[Discuss-gnuradio] Can't stop the top_block which contain transmit_path with GNU Radio version 11001

2009-05-15 Thread Ling Huang

sorry for attaching this again. 
I use UBUNTU 9.04 + gnuradio 11001 and UBUNTU 8.10 +gnuradio 10853 got the
same problem.

I modify the gnuradio-examples/python/digital codes for some experiences. In
one case I want to stop the running flow graph(top block), and then to start
a new connect. I do it well in stop the receive_path connect. But I just
can't stop the top block contain a transmit_path. If I stop the top block,
and wait, it hang in the tb.wait. 
I seem not express well. To make it simple let's see: 
class my_topblock(gr.top_block) 
def __init__(self): 
 self.trans=transmit_path(...) 
 self.connect(self.trans) 
 

tb.start() 
tb.stop() 
tb.wait() # IT HANG IN HERE 
... 
tb.start() 

I made a simple test code to test stopping the top block , please test it to
see what's the problem. 

ps.Eric, 
would you please tell me what cause tb.wait() hanging, where is this bug
from? 
I have install the newest version of GNU Radio, but the problem is still the
same. 

---code
 
#!/usr/bin/env python 

from gnuradio import gr, gru, modulation_utils 
from gnuradio import eng_notation 
from gnuradio.eng_option import eng_option 
from optparse import OptionParser 
import random, time, struct, sys 

# from current dir 
from transmit_path import transmit_path 
import fusb_options 

class my_top_block(gr.top_block): 

def __init__(self,mod_class,options): 
gr.top_block.__init__(self) 
self.txpath = transmit_path(mod_class, options) 
self.connect(self.txpath); 

def main(): 
mods = modulation_utils.type_1_mods() 
parser = OptionParser(option_class=eng_option,
conflict_handler=resolve) 
expert_grp = parser.add_option_group(Expert) 
parser.add_option(-m, --modulation, type=choice,
choices=mods.keys(), 
  default='gmsk', 
  help=Select modulation from: %s [default=%%default]%
(', '.join(mods.keys()),))   
transmit_path.add_options(parser, expert_grp) 
for mod in mods.values(): 
mod.add_options(expert_grp) 
r = gr.enable_realtime_scheduling() 
fusb_options.add_options(expert_grp) 
(options, args) = parser.parse_args () 

tb=my_top_block(mods[options.modulation], options) 
  
tb.start() 
tb.stop() 
print afater stop 
tb.wait() 
print wait done 
tb.start() 
print start again 

if __name__ == '__main__': 
try: 
main() 
except KeyboardInterrupt: 
pass 

-- 
View this message in context: 
http://www.nabble.com/Can%27t-stop-the-top_block-which-contain-transmit_path-with-GNU-Radio-version-11001-tp23569318p23569318.html
Sent from the GnuRadio mailing list archive at Nabble.com.



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio