Quantcast
Channel: ROS Answers: Open Source Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 126

Compiling with dynamic_reconfigure server code leads to deadlock

$
0
0
I have a package into which I want to include dynamic_reconfigure code. *EDIT: I am running Fuerte on Ubuntu 12.04* The following .cfg is compiled into PACKAGENAMEParamsConfig.h without a problem. #! /usr/bin/env python PACKAGE='PACKAGENAME' import roslib; roslib.load_manifest(PACKAGE) from dynamic_reconfigure.parameter_generator import * gen = ParameterGenerator() gen.add("dummy", bool_t, 0, "", True) exit(gen.generate(PACKAGE, "Config", "PACKAGENAMEParams")) In my source code, after including #include #include "PACKAGENAME/PACKAGENAMEParamsConfig.h" (and extending the cmake file(s)) I call ros::init and setup a dynamic_reconfigure::Server object: dynamic_reconfigure::Server dynamic_reconfigure_server; When run, the program locks itself in this last line. GDB reports: Program received signal SIGINT, Interrupt. __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132 132 ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132 #1 0x00007ffff3a87065 in _L_lock_858 () from /lib/x86_64-linux-gnu/libpthread.so.0 #2 0x00007ffff3a86eba in __pthread_mutex_lock (mutex=0xe2a7f0) at pthread_mutex_lock.c:61 #3 0x00007ffff6c8978d in ros::TransportTCP::enableRead() () from /opt/ros/fuerte/lib/libroscpp.so #4 0x00007ffff6c8c0e5 in ros::TransportTCP::listen(int, int, boost::function const&)> const&) () from /opt/ros/fuerte/lib/libroscpp.so #5 0x00007ffff6c7cd79 in ros::ConnectionManager::start() () from /opt/ros/fuerte/lib/libroscpp.so #6 0x00007ffff6ca33c4 in ros::start() () from /opt/ros/fuerte/lib/libroscpp.so #7 0x00007ffff6c79c48 in ros::NodeHandle::construct(std::string const&, bool) () from /opt/ros/fuerte/lib/libroscpp.so #8 0x00007ffff6c7adc5 in ros::NodeHandle::NodeHandle(std::string const&, std::map, std::allocator>> co nst&) () from /opt/ros/fuerte/lib/libroscpp.so #9 0x00000000005223c3 in main (argc=1, argv=0x7fffffffdff8) at /XXXXX/PACKAGENAME/src/main.cpp:448 [<--- 448 is where the ::Server is created] If the server constructor line is commented out, everything works. However, if my code contains a NodeHandle constructor before that, e.g. ros::NodeHandle nh_; dynamic_reconfigure::Server dynamic_reconfigure_server; then the lock happens **in the first NodeHandle constructor**.

Viewing all articles
Browse latest Browse all 126

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>