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

Implemented Publisher::isLatched, which until now was dangling. #1

Closed
wants to merge 1 commit into from
Closed

Conversation

wjwwood
Copy link
Member

@wjwwood wjwwood commented Aug 28, 2012

Implemented Publisher::isLatched, which until now was dangling.

See: https://code.ros.org/trac/ros/ticket/4038

This is the example which exposes the bug:

https://github.com/wjwwood/ros_comm/zipball/is_latched_bug

The pull request fixes the problem, but I have not added tests, nor have I run the ros_comm tests, yet.

Thanks to Michael Carroll for reporting this.

@wjwwood
Copy link
Member Author

wjwwood commented Aug 28, 2012

Commit has been updated.

Still need to run and verify the tests.

@ghost ghost assigned wjwwood Aug 29, 2012
@dirk-thomas
Copy link
Member

Please update the patch to latest master.

@wjwwood
Copy link
Member Author

wjwwood commented Nov 21, 2012

Reopened as #27.

Could not rebase because I deleted my original fork of it.

@wjwwood wjwwood closed this Nov 21, 2012
tfoote pushed a commit that referenced this pull request Jun 17, 2016
tfoote pushed a commit that referenced this pull request Aug 11, 2016
contradict pushed a commit to contradict/ros_comm that referenced this pull request Aug 12, 2016
rqt_robot_dashboard: initial import from external
contradict pushed a commit to contradict/ros_comm that referenced this pull request Aug 12, 2016
Removed unneeded lines to enable merge
lsolanka added a commit to ros-hunter/ros_comm that referenced this pull request Dec 10, 2017
…ilures)

Issues:
- some roswtf tests fail - not sure what the problem is

- Due to use of global variables there are issues with destruction of
global objects in various translation units, during the process
shutdown. This is related to Subscriber and Publisher and happens only
in executables where they are defined as global variables outside of
main. Example: some topic_tools components such as throttle

This is most likely related to the fact that now various components are
statically linked instead of dynamically. And for instance if an
executable depends on rosconsole, and we define a publisher as a global
object, when the program exits, the publisher is getting destroyed, but
other global variables get destroyed before that:

> Core was generated by `devel/lib/topic_tools/throttle messages /input 5'.
> Program terminated with signal SIGABRT, Aborted.
> #0  0x00007f277238c428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
> 54      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
> [Current thread is 1 (Thread 0x7f2773b90780 (LWP 24620))]
> (gdb) bt
> #0  0x00007f277238c428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
> ros#1  0x00007f277238e02a in __GI_abort () at abort.c:89
> ros#2  0x00007f2772ccf7dd in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#3  0x00007f2772ccd6b6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#4  0x00007f2772ccd701 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#5  0x00007f2772cce23f in __cxa_pure_virtual () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#6  0x0000000000719a64 in boost::system::error_code::message[abi:cxx11]() const (this=0x1fb5f00)
>     at .../include/boost/system/error_code.hpp:477
> ros#7  0x000000000071a0ed in boost::system::system_error::what (this=0x1fb5ef0) at .../include/boost/system/system_error.hpp:70
> ros#8  0x00007f2772ccf805 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#9  0x00007f2772ccd6b6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#10 0x00007f2772ccc6a9 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#11 0x00007f2772ccd005 in __gxx_personality_v0 () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#12 0x00007f2772730f83 in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
> ros#13 0x00007f2772731487 in _Unwind_Resume () from /lib/x86_64-linux-gnu/libgcc_s.so.1
> ros#14 0x000000000071a557 in boost::mutex::lock (this=0xbb7fa0 <ros::console::g_locations_mutex>)
>     at .../include/boost/thread/pthread/mutex.hpp:119
> ros#15 0x000000000071c723 in boost::unique_lock<boost::mutex>::lock (this=0x7fff031f4950)
>     at .../include/boost/thread/lock_types.hpp:346
> ros#16 0x000000000071bdeb in boost::unique_lock<boost::mutex>::unique_lock (this=0x7fff031f4950, m_=...)
>     at .../include/boost/thread/lock_types.hpp:124
> ros#17 0x0000000000718dae in ros::console::initializeLogLocation (loc=0xbb5c70 <ros::Publisher::Impl::~Impl()::__rosconsole_define_location__loc>, name="ros.roscpp",
>     level=ros::console::levels::Debug) at .../ros_comm/tools/rosconsole/src/rosconsole/rosconsole.cpp:632
> ros#18 0x00000000007278b6 in ros::Publisher::Impl::~Impl (this=0x1fb6730, __in_chrg=<optimised out>) at .../ros_comm/clients/roscpp/src/libros/publisher.cpp:40
> ros#19 0x00000000007299a9 in boost::detail::sp_ms_deleter<ros::Publisher::Impl>::destroy (this=0x1fb6728)
>     at .../include/boost/smart_ptr/make_shared_object.hpp:59
> ros#20 0x0000000000729b14 in boost::detail::sp_ms_deleter<ros::Publisher::Impl>::operator() (this=0x1fb6728)
>     at .../include/boost/smart_ptr/make_shared_object.hpp:93
> ros#21 0x0000000000729a53 in boost::detail::sp_counted_impl_pd<ros::Publisher::Impl*, boost::detail::sp_ms_deleter<ros::Publisher::Impl> >::dispose (this=0x1fb6710)
>     at .../include/boost/smart_ptr/detail/sp_counted_impl.hpp:172
> ros#22 0x0000000000707ab5 in boost::detail::sp_counted_base::release (this=0x1fb6710)
>     at .../include/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp:110
> ros#23 0x0000000000707b41 in boost::detail::shared_count::~shared_count (this=0xbb7d28 <g_pub+8>, __in_chrg=<optimised out>)
>     at .../include/boost/smart_ptr/detail/shared_count.hpp:426
> ros#24 0x0000000000707ef4 in boost::shared_ptr<ros::Publisher::Impl>::~shared_ptr (this=0xbb7d20 <g_pub>, __in_chrg=<optimised out>)
>     at .../include/boost/smart_ptr/shared_ptr.hpp:341
> ros#25 0x0000000000727bce in ros::Publisher::~Publisher (this=0xbb7d20 <g_pub>, __in_chrg=<optimised out>)
>     at .../ros_comm/clients/roscpp/src/libros/publisher.cpp:74
> ros#26 0x00007f2772390ff8 in __run_exit_handlers (status=0, listp=0x7f277271b5f8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:82
> ros#27 0x00007f2772391045 in __GI_exit (status=<optimised out>) at exit.c:104
> ros#28 0x00007f2772377837 in __libc_start_main (main=0x706886 <main(int, char**)>, argc=4, argv=0x7fff031f4bf8, init=<optimised out>, fini=<optimised out>, rtld_fini=<optimised out>,
>     stack_end=0x7fff031f4be8) at ../csu/libc-start.c:325
> ros#29 0x0000000000705bc9 in _start ()
Nickolaim added a commit to Nickolaim/ros_comm that referenced this pull request Mar 2, 2018
dirk-thomas pushed a commit that referenced this pull request May 18, 2018
XmlRpcServer: use unsigned int for rlimit
lsolanka added a commit to ros-hunter/ros_comm that referenced this pull request Jun 3, 2018
…ilures)

Issues:
- some roswtf tests fail - not sure what the problem is

- Due to use of global variables there are issues with destruction of
global objects in various translation units, during the process
shutdown. This is related to Subscriber and Publisher and happens only
in executables where they are defined as global variables outside of
main. Example: some topic_tools components such as throttle

This is most likely related to the fact that now various components are
statically linked instead of dynamically. And for instance if an
executable depends on rosconsole, and we define a publisher as a global
object, when the program exits, the publisher is getting destroyed, but
other global variables get destroyed before that:

> Core was generated by `devel/lib/topic_tools/throttle messages /input 5'.
> Program terminated with signal SIGABRT, Aborted.
> #0  0x00007f277238c428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
> 54      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
> [Current thread is 1 (Thread 0x7f2773b90780 (LWP 24620))]
> (gdb) bt
> #0  0x00007f277238c428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
> ros#1  0x00007f277238e02a in __GI_abort () at abort.c:89
> ros#2  0x00007f2772ccf7dd in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#3  0x00007f2772ccd6b6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#4  0x00007f2772ccd701 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#5  0x00007f2772cce23f in __cxa_pure_virtual () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#6  0x0000000000719a64 in boost::system::error_code::message[abi:cxx11]() const (this=0x1fb5f00)
>     at .../include/boost/system/error_code.hpp:477
> ros#7  0x000000000071a0ed in boost::system::system_error::what (this=0x1fb5ef0) at .../include/boost/system/system_error.hpp:70
> ros#8  0x00007f2772ccf805 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#9  0x00007f2772ccd6b6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#10 0x00007f2772ccc6a9 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#11 0x00007f2772ccd005 in __gxx_personality_v0 () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> ros#12 0x00007f2772730f83 in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
> ros#13 0x00007f2772731487 in _Unwind_Resume () from /lib/x86_64-linux-gnu/libgcc_s.so.1
> ros#14 0x000000000071a557 in boost::mutex::lock (this=0xbb7fa0 <ros::console::g_locations_mutex>)
>     at .../include/boost/thread/pthread/mutex.hpp:119
> ros#15 0x000000000071c723 in boost::unique_lock<boost::mutex>::lock (this=0x7fff031f4950)
>     at .../include/boost/thread/lock_types.hpp:346
> ros#16 0x000000000071bdeb in boost::unique_lock<boost::mutex>::unique_lock (this=0x7fff031f4950, m_=...)
>     at .../include/boost/thread/lock_types.hpp:124
> ros#17 0x0000000000718dae in ros::console::initializeLogLocation (loc=0xbb5c70 <ros::Publisher::Impl::~Impl()::__rosconsole_define_location__loc>, name="ros.roscpp",
>     level=ros::console::levels::Debug) at .../ros_comm/tools/rosconsole/src/rosconsole/rosconsole.cpp:632
> ros#18 0x00000000007278b6 in ros::Publisher::Impl::~Impl (this=0x1fb6730, __in_chrg=<optimised out>) at .../ros_comm/clients/roscpp/src/libros/publisher.cpp:40
> ros#19 0x00000000007299a9 in boost::detail::sp_ms_deleter<ros::Publisher::Impl>::destroy (this=0x1fb6728)
>     at .../include/boost/smart_ptr/make_shared_object.hpp:59
> ros#20 0x0000000000729b14 in boost::detail::sp_ms_deleter<ros::Publisher::Impl>::operator() (this=0x1fb6728)
>     at .../include/boost/smart_ptr/make_shared_object.hpp:93
> ros#21 0x0000000000729a53 in boost::detail::sp_counted_impl_pd<ros::Publisher::Impl*, boost::detail::sp_ms_deleter<ros::Publisher::Impl> >::dispose (this=0x1fb6710)
>     at .../include/boost/smart_ptr/detail/sp_counted_impl.hpp:172
> ros#22 0x0000000000707ab5 in boost::detail::sp_counted_base::release (this=0x1fb6710)
>     at .../include/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp:110
> ros#23 0x0000000000707b41 in boost::detail::shared_count::~shared_count (this=0xbb7d28 <g_pub+8>, __in_chrg=<optimised out>)
>     at .../include/boost/smart_ptr/detail/shared_count.hpp:426
> ros#24 0x0000000000707ef4 in boost::shared_ptr<ros::Publisher::Impl>::~shared_ptr (this=0xbb7d20 <g_pub>, __in_chrg=<optimised out>)
>     at .../include/boost/smart_ptr/shared_ptr.hpp:341
> ros#25 0x0000000000727bce in ros::Publisher::~Publisher (this=0xbb7d20 <g_pub>, __in_chrg=<optimised out>)
>     at .../ros_comm/clients/roscpp/src/libros/publisher.cpp:74
> ros#26 0x00007f2772390ff8 in __run_exit_handlers (status=0, listp=0x7f277271b5f8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:82
> ros#27 0x00007f2772391045 in __GI_exit (status=<optimised out>) at exit.c:104
> ros#28 0x00007f2772377837 in __libc_start_main (main=0x706886 <main(int, char**)>, argc=4, argv=0x7fff031f4bf8, init=<optimised out>, fini=<optimised out>, rtld_fini=<optimised out>,
>     stack_end=0x7fff031f4be8) at ../csu/libc-start.c:325
> ros#29 0x0000000000705bc9 in _start ()
johnsonshih referenced this pull request in johnsonshih/ros_comm Sep 18, 2018
* Fix roslz4 build issue on Windows

* Fix xmlrpcpp build issue on Windows, fix polling fails when run on Windows

* Fix roscpp build issue on Windows

* Fix rosbag_storage build issue on Windows

* fix issues in python scripts to run roscore on Windows

* Fix build issue when build with CATKIN_ENABLE_TESTING on but without googletest

* Fix build issue on Windows

* correct typo

* refine changes

* refine changes

* Adjust what to expose from XmlRpcClientForTest

* Add back const

* Proper indent

* Create helper function for socketpair on Windows

* fine tune change

* revert unrelated whitespace changes

* export _logHandler from XmlRpcLogHandler

* Fix message_filters test code build break

* refine change

* refine change

* Add missing header file back

* Add storage-class attribute for various classes
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

Successfully merging this pull request may close these issues.

2 participants