Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blocking thread preventing osmo-trx to shutdown properly #29

Open
clebig opened this issue Dec 8, 2020 · 1 comment
Open

Blocking thread preventing osmo-trx to shutdown properly #29

clebig opened this issue Dec 8, 2020 · 1 comment

Comments

@clebig
Copy link
Contributor

clebig commented Dec 8, 2020

Hi,

I'm using the master branch of UHD-Fairwaves for which I had to apply #27 to fix #26.

OS : Debian Testing amd64
GCC : 10.2.0
libboost 1.71

I have compiled osmo-trx-uhd to use it with UmTRX. However, it doesn't stop properly. It gets stuck after SIGTEM or SIGINT.
I have to SIGKILL to exit.

The osmo-trx code doesn't seem the source of the problem.

if I ctrl-c osmo-trx, I gets stuck :

^CTue Dec 8 17:03:35 2020 DMAIN <0000> osmo-trx.cpp:609 [tid=139644193412480] -- Transceiver active with 1 channel(s) signal 2 received shutting down Tue Dec 8 17:03:35 2020 DMAIN <0000> osmo-trx.cpp:566 [tid=139644193412480] Shutting down transceiver... ^C^C

When I strace on the blocking process, I have the screen flooded with

poll([{fd=24, events=POLLIN}], 1, 100) = 1 ([{fd=24, revents=POLLIN}]) recvfrom(24, "P\22\0\6\0\0\0\2\0\0\0\30\305X\233\361\0\0\0\0\377\377\377\377", 1472, 0, NULL, NULL) = 24 recvfrom(24, 0x55dce26565d0, 1472, MSG_DONTWAIT, NULL, NULL) = -1 EAGAIN (Ressource temporairement non disponible) poll([{fd=24, events=POLLIN}], 1, 100^Cstrace: Process 19537 detached <detached ...>

Here a gdb backtrace of this pid

(gdb) bt #0 0x00007f5ee31aa35f in __GI___poll (fds=0x7f5edd382610, nfds=1, timeout=100) at ../sysdeps/unix/sysv/linux/poll.c:29 #1 0x00007f5ee3f71605 in udp_zero_copy_asio_impl::get_recv_buff(double) () from /usr/local/lib/libuhd.so.3.15.0 #2 0x00007f5ee0d33ff9 in handle_tx_async_msgs(unsigned long, double, boost::shared_ptr<flow_control_monitor>, boost::shared_ptr<uhd::transport::zero_copy_if>, boost::function<void ()>, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >) () from /usr/local/lib/uhd/modules/libumtrx.so #3 0x00007f5ee0d4e603 in void boost::_bi::list7<boost::_bi::value<unsigned long>, boost::_bi::value<double>, boost::_bi::value<boost::shared_ptr<flow_control_monitor> >, boost::_bi::value<boost::shared_ptr<uhd::transport::zero_copy_if> >, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> > >, boost::_bi::value<boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> > > >::operator()<void (*)(unsigned long, double, boost::shared_ptr<flow_control_monitor>, boost::shared_ptr<uhd::transport::zero_copy_if>, boost::function<void ()>, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(unsigned long, double, boost::shared_ptr<flow_control_monitor>, boost::shared_ptr<uhd::transport::zero_copy_if>, boost::function<void ()>, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >), boost::_bi::list0&, int) () from /usr/local/lib/uhd/modules/libumtrx.so #4 0x00007f5ee0d4ca07 in boost::_bi::bind_t<void, void (*)(unsigned long, double, boost::shared_ptr<flow_control_monitor>, boost::shared_ptr<uhd::transport::zero_copy_if>, boost::function<void ()>, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >), boost::_bi::list7<boost::_bi::value<unsigned long>, boost::_bi::value<double>, boost::_bi::value<boost::shared_ptr<flow_control_monitor> >, boost::_bi::value<boost::shared_ptr<uhd::transport::zero_copy_if> >, boost::_--Type <RET> for more, q to quit, c to continue without paging-- bi::value<boost::function<void ()> >, boost::_bi::value<boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> > >, boost::_bi::value<boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> > > > >::operator()() () from /usr/local/lib/uhd/modules/libumtrx.so #5 0x00007f5ee0d4b0f9 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, void (*)(unsigned long, double, boost::shared_ptr<flow_control_monitor>, boost::shared_ptr<uhd::transport::zero_copy_if>, boost::function<void ()>, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >, boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> >), boost::_bi::list7<boost::_bi::value<unsigned long>, boost::_bi::value<double>, boost::_bi::value<boost::shared_ptr<flow_control_monitor> >, boost::_bi::value<boost::shared_ptr<uhd::transport::zero_copy_if> >, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> > >, boost::_bi::value<boost::shared_ptr<uhd::transport::bounded_buffer<uhd::async_metadata_t> > > > >, void>::invoke(boost::detail::function::function_buffer&) () from /usr/local/lib/uhd/modules/libumtrx.so #6 0x00007f5ee3f39b93 in task_impl::task_loop(boost::function<void ()> const&) () from /usr/local/lib/libuhd.so.3.15.0 #7 0x00007f5ee34a8ed0 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6 #8 0x00007f5ee45d1ea7 in start_thread (arg=<optimized out>) at pthread_create.c:477 #9 0x00007f5ee31b4d4f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

@dsseng dsseng mentioned this issue Nov 18, 2023
@dsseng
Copy link
Contributor

dsseng commented Nov 19, 2023

Same thing happens to srsENB, however apparently harmless.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants