saleyn / eixx

Erlang C++ Interface
Apache License 2.0
137 stars 26 forks source link

test-connect: fatal error: in "test_async_queue" #28

Open matwey opened 8 years ago

matwey commented 8 years ago

Hello,

I am using boost-1.60.0 and gcc-5.3.1

When I run test-connect, I see the following:

> ./test/test-connect 
Running 2 test cases...
unknown location(0): fatal error: in "test_async_queue": boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_weak_ptr> >: tr1::bad_weak_ptr
/home/matwey/lab/eixx/test/test_async_queue.cpp(72): last checkpoint

and then test-connect is forever waiting on ioservice.run()

#0  0x00007ffff5e779f3 in epoll_wait () from /lib64/libc.so.6
#1  0x000000000055ce07 in boost::asio::detail::epoll_reactor::run (this=0x8280e0, block=true, ops=...)
    at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:392
#2  0x000000000055dd90 in boost::asio::detail::task_io_service::do_run_one (this=0x823190, lock=..., this_thread=..., ec=...)
    at /usr/include/boost/asio/detail/impl/task_io_service.ipp:356
#3  0x000000000055d908 in boost::asio::detail::task_io_service::run (this=0x823190, ec=...)
    at /usr/include/boost/asio/detail/impl/task_io_service.ipp:149
#4  0x000000000055e0b9 in boost::asio::io_service::run (this=0x7fffffffc2f0) at /usr/include/boost/asio/impl/io_service.ipp:59
#5  0x000000000052e308 in test_async_queue_concurrent::test_method (this=0x7fffffffc43f)
    at /home/matwey/lab/eixx/test/test_async_queue.cpp:144
#6  0x000000000052df53 in test_async_queue_concurrent_invoker () at /home/matwey/lab/eixx/test/test_async_queue.cpp:122
#7  0x000000000058ee6a in boost::detail::function::void_function_invoker0<void (*)(), void>::invoke (function_ptr=...)
    at /usr/include/boost/function/function_template.hpp:118
#8  0x000000000055f408 in boost::function0<void>::operator() (this=0x81cf18) at /usr/include/boost/function/function_template.hpp:771
#9  0x000000000055091d in boost::detail::forward::operator() (this=0x7fffffffd6d8)
    at /usr/include/boost/test/impl/execution_monitor.ipp:1304
#10 0x000000000058a94f in boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke (function_obj_ptr=...)
    at /usr/include/boost/function/function_template.hpp:138
#11 0x0000000000573a9e in boost::function0<int>::operator() (this=0x7fffffffd6d0)
    at /usr/include/boost/function/function_template.hpp:771
#12 0x000000000056386d in boost::detail::do_invoke<boost::shared_ptr<boost::detail::translator_holder_base>, boost::function<int ()> >(boost::shared_ptr<boost::detail::translator_holder_base> const&, boost::function<int ()> const&) (tr=..., F=...)
    at /usr/include/boost/test/impl/execution_monitor.ipp:281
#13 0x000000000051d226 in boost::execution_monitor::catch_signals(boost::function<int ()> const&) (
    this=0x8084c0 <boost::unit_test::singleton<boost::unit_test::unit_test_monitor_t>::instance()::the_inst>, F=...)
    at /usr/include/boost/test/impl/execution_monitor.ipp:870
#14 0x000000000051d38d in boost::execution_monitor::execute(boost::function<int ()> const&) (
    this=0x8084c0 <boost::unit_test::singleton<boost::unit_test::unit_test_monitor_t>::instance()::the_inst>, F=...)
    at /usr/include/boost/test/impl/execution_monitor.ipp:1207
#15 0x000000000051dcb3 in boost::execution_monitor::vexecute(boost::function<void ()> const&) (
    this=0x8084c0 <boost::unit_test::singleton<boost::unit_test::unit_test_monitor_t>::instance()::the_inst>, F=...)
    at /usr/include/boost/test/impl/execution_monitor.ipp:1313
#16 0x0000000000525721 in boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned int) (
    this=0x8084c0 <boost::unit_test::singleton<boost::unit_test::unit_test_monitor_t>::instance()::the_inst>, func=..., timeout=0)
    at /usr/include/boost/test/impl/unit_test_monitor.ipp:46
---Type <return> to continue, or q <return> to quit---
#17 0x000000000054fa25 in boost::unit_test::framework::state::execute_test_tree (
    this=0x806be0 <boost::unit_test::framework::impl::(anonymous namespace)::s_frk_state()::the_inst>, tu_id=65537, timeout=0)
    at /usr/include/boost/test/impl/framework.ipp:691
#18 0x000000000054f489 in boost::unit_test::framework::state::execute_test_tree (
    this=0x806be0 <boost::unit_test::framework::impl::(anonymous namespace)::s_frk_state()::the_inst>, tu_id=1, timeout=0)
    at /usr/include/boost/test/impl/framework.ipp:642
#19 0x000000000051b60b in boost::unit_test::framework::run (id=1, continue_test=true)
    at /usr/include/boost/test/impl/framework.ipp:1230
#20 0x00000000005253b2 in boost::unit_test::unit_test_main (init_func=0x52c603 <init_unit_test_suite(int, char**)>, argc=1, 
    argv=0x7fffffffe588) at /usr/include/boost/test/impl/unit_test_main.ipp:229
#21 0x0000000000525634 in main (argc=1, argv=0x7fffffffe588) at /usr/include/boost/test/impl/unit_test_main.ipp:284
trin-cz commented 8 years ago

Hi Serge, I have the same problem. I can send a message to queue. I can see it (std:cerr <<) enqued in a queue with correct m_name. But the message never gets dequeued. What is triggering the dequeue?

Same problem prevents test-node from succeeding. It connects to Erlang node, sends rpc request, receives the response, message is enqueued in correct mailbox, but the message callback is never called.

I am using boost 1.55 and g++ 5.4.1 . Does the test work for you? Which versions are you using?