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

Fix for Python threading error message bug. #17

Closed
wants to merge 1 commit into from

Conversation

hershwg
Copy link
Member

@hershwg hershwg commented Nov 5, 2012

This is a small patch to roslaunch/init.py which suppresses the message:

Exception AttributeError: AttributeError("'_DummyThread' object has no attribute '_Thread__block'",) in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> ignored

which Python 2.7.3 prints when using roslaunch.

See http://stackoverflow.com/questions/13193278/understand-python-threading-bug for details on the bug and this fix.

I know the "right" thing to do is wait for the Python people or the Ubuntu people to do another release, since it is already fixed in the Python source upstream, but who knows how long that will be. In the meantime the error message happens so frequently that it makes it hard to see where our real errors occur.

contradict pushed a commit to contradict/ros_comm that referenced this pull request Aug 12, 2016
…ue isn't completely gone but this provides hopefully better behavior).
rsinnet pushed a commit to MisoRobotics/ros_comm that referenced this pull request Jun 19, 2017
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 ()
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 added a commit to johnsonshih/ros_comm that referenced this pull request Sep 20, 2018
Move rosbag_storage.dll to package lib destination
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