Modify

Opened 8 years ago

Last modified 8 years ago

#4766 new Bugs

MinGW: ip_tcp test hangs on io_service::run() after tcp::socket::cancel()

Reported by: Jim Bell <jim@…> Owned by: chris_kohlhoff
Milestone: Boost 1.45.0 Component: asio
Version: Boost 1.44.0 Severity: Problem
Keywords: mingw gcc-4.4 tcp socket cancel io_service run Cc: jim@…

Description

The MinGW-32 trunk regression test (current as of 2010/10/21) simply says:

Run [2010-10-21 16:24:46 UTC]: fail

bjam.log says:

300 second time limit exceeded

Running it in gdb verifies that it seems hung indefinitely, and breaking shows this stack trace:

#0  0x7c90e514 in ntdll!LdrAccessResource ()
   from C:\WINDOWS\system32\ntdll.dll
#1  0x7c90da4a in ntdll!ZwRemoveIoCompletion ()
   from C:\WINDOWS\system32\ntdll.dll
#2  0x7c80a7e6 in KERNEL32!GetQueuedCompletionStatus ()
   from C:\WINDOWS\system32\kernel32.dll
#3  0x00443dfb in boost::asio::detail::win_iocp_io_service::do_one (
    this=0x3e8f8, block=true, ec=@0x23f314)
    at ../boost/asio/detail/impl/win_iocp_io_service.ipp:349
#4  0x00443954 in boost::asio::detail::win_iocp_io_service::run (
    this=0x3e8f8, ec=@0x23f314)
    at ../boost/asio/detail/impl/win_iocp_io_service.ipp:160
#5  0x00438cee in boost::asio::io_service::run (this=0x23f61c)
    at ../boost/asio/impl/io_service.ipp:57
#6  0x004061c1 in ip_tcp_socket_runtime::test ()
    at ..\libs\asio\test\ip\tcp.cpp:453
#7  0x0046873a in boost::unit_test::ut_detail::invoker<boost::unit_test::ut_detail::unused>::invoke<void (*)()> (this=0x23f93f, f=@0x386cc)
    at ../boost/test/utils/callback.hpp:56
#8  0x00466a63 in boost::unit_test::ut_detail::callback0_impl_t<boost::unit_test::ut_detail::unused, void (*)()>::invoke (this=0x386c8)
    at ../boost/test/utils/callback.hpp:89
#9  0x00473065 in boost::unit_test::callback0<boost::unit_test::ut_detail::unused>::operator() (this=0x38aac) at ../boost/test/utils/callback.hpp:118
#10 0x004214c1 in operator() (this=0x34dac)
    at ../boost/test/impl/unit_test_monitor.ipp:41
#11 0x004214ab in invoke<boost::unit_test::<unnamed>::zero_return_wrapper_t<boost::unit_test::callback0<boost::unit_test::ut_detail::unused> > > (
    this=0x23f9cf, f=@0x34dac) at ../boost/test/utils/callback.hpp:42
#12 0x00421497 in invoke (this=0x34da8) at ../boost/test/utils/callback.hpp:89
#13 0x00473085 in boost::unit_test::callback0<int>::operator() (this=0x23fad4)
    at ../boost/test/utils/callback.hpp:118
#14 0x004500ad in boost::detail::do_invoke<boost::shared_ptr<boost::detail::translator_holder_base>, boost::unit_test::callback0<int> > (tr=@0x4e6540,
    F=@0x23fad4) at ../boost/test/impl/execution_monitor.ipp:253
#15 0x004204cb in boost::execution_monitor::catch_signals (this=0x4e6530,
    F=@0x23fad4) at ../boost/test/impl/execution_monitor.ipp:1129
#16 0x0042064d in boost::execution_monitor::execute (this=0x4e6530,
    F=@0x23fad4) at ../boost/test/impl/execution_monitor.ipp:1160
#17 0x004210b6 in boost::unit_test::unit_test_monitor_t::execute_and_translate
    (this=0x4e6530, tc=@0x38a80)
    at ../boost/test/impl/unit_test_monitor.ipp:69
#18 0x00460d53 in boost::unit_test::framework_impl::visit (this=0x5233c8,
    tc=@0x38a80) at ../boost/test/impl/framework.ipp:156
#19 0x00409e33 in boost::unit_test::traverse_test_tree (tc=@0x38a80,
    V=@0x5233c8) at ../boost/test/impl/unit_test_suite.ipp:193
#20 0x0040a267 in boost::unit_test::traverse_test_tree (id=65539, V=@0x5233c8)
    at ../boost/test/impl/unit_test_suite.ipp:232
#21 0x00409f70 in boost::unit_test::traverse_test_tree (suite=@0x385c8,
    V=@0x5233c8) at ../boost/test/impl/unit_test_suite.ipp:207
#22 0x0040a283 in boost::unit_test::traverse_test_tree (id=2, V=@0x5233c8)
    at ../boost/test/impl/unit_test_suite.ipp:234
#23 0x00409f70 in boost::unit_test::traverse_test_tree (suite=@0x384d8,
    V=@0x5233c8) at ../boost/test/impl/unit_test_suite.ipp:207
#24 0x0040a283 in boost::unit_test::traverse_test_tree (id=1, V=@0x5233c8)
    at ../boost/test/impl/unit_test_suite.ipp:234
#25 0x0040d9d1 in boost::unit_test::framework::run (id=1, continue_test=true)
    at ../boost/test/impl/framework.ipp:442
#26 0x00407ddd in boost::unit_test::unit_test_main (
    init_func=0x407695 <init_unit_test_suite(int, char**)>, argc=1,
    argv=0x32f08) at ../boost/test/impl/unit_test_main.ipp:185
#27 0x00407fd1 in main (argc=1, argv=0x32f08)
    at ../boost/test/impl/unit_test_main.ipp:237

Key line: ..\libs\asio\test\ip\tcp.cpp:453; The io_service::run() call after tcp::socket::cancel().

Attachments (0)

Change History (3)

comment:1 Changed 8 years ago by Richard Webb <richard.webb@…>

fwiw, I'm not seeing this issue on Mingw 4.5.1 / WinXP (see the RW_Mingw45 runer on Trunk).

comment:2 Changed 8 years ago by chris_kohlhoff

I do not think MinGW is the issue here. The VC8 jc-bell.com ip_tcp test also fails. Is this run on the same machine?

If so, I suspect that there is a non-standard (and possibly buggy) Winsock LSP (Layered Service Provider) installed on the system. Perhaps there is a firewall or some VPN software installed?. The Microsoft tool sporder.exe (included with some versions of the Windows SDK) will tell you what LSPs are installed.

comment:3 Changed 8 years ago by Jim Bell <jim@…>

Indeed they are run on the same machine. I'll investigate. Thanks for the pointer.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The owner will remain chris_kohlhoff.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.