Opened 12 years ago

Closed 10 years ago

#4769 closed Bugs (fixed)

MinGW: std::terminate() called recursively in exception_ptr_test

Reported by: Jim Bell <jim@…> Owned by: Emil Dotchevski
Milestone: Boost 1.45.0 Component: exception
Version: Boost 1.44.0 Severity: Regression
Keywords: mingw terminate recursively Cc:

Description

exception_ptr_test fails (see here, link valid 2010/10/21) with what appears to be many calls to terminate:

Run [2010-10-21 22:46:51 UTC]: fail

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<exc>terminate called recursively
'
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
terminate called recursively
 
EXIT STATUS: 3 

Running it in gdb and breaking at std::terminate, I get:

(gdb) bt
#0  std::terminate ()
    at ../../../../gcc-4.4.0/libstdc++-v3/libsupc++/eh_terminate.cc:48
#1  0x00478f57 in __cxa_throw (obj=0x34780, tinfo=0x48c060,
    dest=0x412668 <~clone_impl>)
    at ../../../../gcc-4.4.0/libstdc++-v3/libsupc++/eh_throw.cc:83
#2  0x00411d9b in boost::throw_exception<exc> (e=@0xcafde0)
    at ../boost/throw_exception.hpp:61
#3  0x0041550b in boost::exception_detail::throw_exception_<exc> (
    x=@0xcafe30, current_function=0x488754 "void thread_func()",
    file=0x488398 "..\\libs\\exception\\test\\exception_ptr_test.cpp",
    line=103) at ../boost/throw_exception.hpp:78
#4  0x004014b9 in thread_func ()
    at ..\libs\exception\test\exception_ptr_test.cpp:103
#5  0x0041f143 in boost::detail::function::void_function_invoker0<void (*)(), void>::invoke (function_ptr=@0x252f18)
    at ../boost/function/function_template.hpp:112
#6  0x004266b5 in boost::function0<void>::operator() (this=0x252f14)
    at ../boost/function/function_template.hpp:1013
#7  0x004101ae in thread_handle::thread_wrapper (f=@0x252f14, ep=@0x252f24)
    at ..\libs\exception\test\exception_ptr_test.cpp:37
#8  0x0041d267 in boost::_bi::list2<boost::_bi::value<boost::function<void ()()>
 >, boost::_bi::value<boost::shared_ptr<boost::exception_detail::clone_base const> > >::operator()<void (*)(boost::function<void ()()> const&, boost::shared_ptr
<boost::exception_detail::clone_base const>&), boost::_bi::list0> (
    this=0x252f14, f=@0x252f10, a=@0xcaff27) at ../boost/bind/bind.hpp:313
#9  0x0041d44a in boost::_bi::bind_t<void, void (*)(boost::function<void ()()> const&, boost::shared_ptr<boost::exception_detail::clone_base const>&), boost::_bi::list2<boost::_bi::value<boost::function<void ()()> >, boost::_bi::value<boost
::shared_ptr<boost::exception_detail::clone_base const> > > >::operator() (
    this=0x252f10) at ../boost/bind/bind_template.hpp:20
#10 0x0041da64 in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(boost::function<void ()()> const&, boost::shared_ptr<boost::exception_detail::clone_base const>&), boost::_bi::list2<boost::_bi::value<boost::function<void ()()>
 >, boost::_bi::value<boost::shared_ptr<boost::exception_detail::clone_base const> > > > >::run (this=0x252ef0) at ../boost/thread/detail/thread.hpp:61
#11 0x00401b65 in thread_start_function (param=0x252ef0)
    at ..\libs\thread\src\win32\thread.cpp:168
#12 0x77c3a3b0 in msvcrt!_endthreadex () from C:\WINDOWS\system32\msvcrt.dll
#13 0x7c80b729 in KERNEL32!GetModuleFileNameA ()
   from C:\WINDOWS\system32\kernel32.dll
#14 0x00000000 in ?? ()

These threads:

(gdb) info threads
* 3 thread 944.0x1764  std::terminate ()
    at ../../../../gcc-4.4.0/libstdc++-v3/libsupc++/eh_terminate.cc:48
  2 thread 944.0x154c  0x6e946dbb in libgcc_s_dw2-1!_Unwind_Resume_or_Rethrow
    () from C:\Software\Open\lib\Qt\2010.05\mingw\bin\libgcc_s_dw2-1.dll
  1 thread 944.0x13c8  0x7c90e514 in ntdll!LdrAccessResource ()
   from C:\WINDOWS\system32\ntdll.dll

Change History (3)

comment:1 by Jim Bell <jim@…>, 12 years ago

Severity: ShowstopperRegression

comment:2 by Emil Dotchevski, 12 years ago

I can't reproduce this on MinGW with GCC version 4.5.0. Maybe it is (was?) a bug in the compiler?

comment:3 by Emil Dotchevski, 10 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.