[GCC 4.6] Problems catching exceptions

Although GCC 4.6 isn't released yet, I've been getting good results on a non-Boost project with the weekly MinGW build. See http://www.equation.com/servlet/equation.cmd?call=fortran for the prebuilt MinGW binaries. When I try to run the Boost Filesystem V3 regression tests against this build, however, all the tests fail that involve catching an exception. These tests pass for numerous other compilers, and for other versions of GCC. Since 4.6 is getting close to release, I'd like to see the problem fixed. But I don't have enough knowledge of GCC and MinGW to know where the problem is, or whether this is already a reported bug. Is there anyone out there who knows enough about GCC and MinGW to tell if this bug is already known? --Beman

On Sun, Jan 2, 2011 at 8:44 AM, Beman Dawes <bdawes@acm.org> wrote:
When I try to run the Boost Filesystem V3 regression tests against this build, however, all the tests fail that involve catching an exception. These tests pass for numerous other compilers, and for other versions of GCC.
It's worth running the Boost Exception tests. Let me know if you need help with that. Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode

On Sun, Jan 2, 2011 at 6:08 PM, Emil Dotchevski <emildotchevski@gmail.com> wrote:
On Sun, Jan 2, 2011 at 8:44 AM, Beman Dawes <bdawes@acm.org> wrote:
When I try to run the Boost Filesystem V3 regression tests against this build, however, all the tests fail that involve catching an exception. These tests pass for numerous other compilers, and for other versions of GCC.
It's worth running the Boost Exception tests. Let me know if you need help with that.
All Boost Exception tests passing here with MinGW/GCC 4.5. With MinGW/GCC 4.6, copy_exception_test and exception_ptr_test are failing at link time with "multiple definition of `non-virtual thunk" errors for error_info_injector, clone_impl, error_info_injector, etc. error_info_test is failing 8 run tests: error_info_test.cpp(262): test '*boost::get_error_info<test_1>(x)==42' failed in function 'void test_add_tuple()' error_info_test.cpp(263): test '*boost::get_error_info<test_2>(x)==42u' failed in function 'void test_add_tuple()' error_info_test.cpp(277): test '*boost::get_error_info<test_1>(x)==42' failed in function 'void test_add_tuple()' error_info_test.cpp(278): test '*boost::get_error_info<test_2>(x)==42u' failed in function 'void test_add_tuple()' error_info_test.cpp(279): test '*boost::get_error_info<test_3>(x)==42.0f' failed in function 'void test_add_tuple()' error_info_test.cpp(293): test '*boost::get_error_info<test_1>(x)==42' failed in function 'void test_add_tuple()' error_info_test.cpp(294): test '*boost::get_error_info<test_2>(x)==42u' failed in function 'void test_add_tuple()' error_info_test.cpp(295): test '*boost::get_error_info<test_3>(x)==42.0f' failed in function 'void test_add_tuple()' 8 errors detected. So the problems appear to affect Boost Exception too. --Beman

On Sun, Jan 2, 2011 at 5:16 PM, Beman Dawes <bdawes@acm.org> wrote:
All Boost Exception tests passing here with MinGW/GCC 4.5.
With MinGW/GCC 4.6, copy_exception_test and exception_ptr_test are failing at link time with "multiple definition of `non-virtual thunk" errors for error_info_injector, clone_impl, error_info_injector, etc.
error_info_test is failing 8 run tests:
error_info_test.cpp(262): test '*boost::get_error_info<test_1>(x)==42' failed in function 'void test_add_tuple()' error_info_test.cpp(263): test '*boost::get_error_info<test_2>(x)==42u' failed in function 'void test_add_tuple()' error_info_test.cpp(277): test '*boost::get_error_info<test_1>(x)==42' failed in function 'void test_add_tuple()' error_info_test.cpp(278): test '*boost::get_error_info<test_2>(x)==42u' failed in function 'void test_add_tuple()' error_info_test.cpp(279): test '*boost::get_error_info<test_3>(x)==42.0f' failed in function 'void test_add_tuple()' error_info_test.cpp(293): test '*boost::get_error_info<test_1>(x)==42' failed in function 'void test_add_tuple()' error_info_test.cpp(294): test '*boost::get_error_info<test_2>(x)==42u' failed in function 'void test_add_tuple()' error_info_test.cpp(295): test '*boost::get_error_info<test_3>(x)==42.0f' failed in function 'void test_add_tuple()' 8 errors detected.
Thanks for running these tests Beman! Hopefully someone who knows GCC will notice. Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode

On Sun, Jan 2, 2011 at 8:42 PM, Emil Dotchevski <emildotchevski@gmail.com> wrote:
... Thanks for running these tests Beman! Hopefully someone who knows GCC will notice.
Emil Dotchevski
It would be interesting if someone could run them on Linux. If the same failures appeared, it would mean the problems are in GCC itself. But if the tests passed on Linux, it might well mean that MinGW is the culprit. I can run the tests on my Linux virtual machine. But I've not had much luck building GCC. Does anyone have GCC 4.6 weekly snapshot built for Ubuntu? --Beman

On Sun, Jan 02, 2011 at 09:03:22PM -0500, Beman Dawes wrote:
On Sun, Jan 2, 2011 at 8:42 PM, Emil Dotchevski <emildotchevski@gmail.com> wrote:
... Thanks for running these tests Beman! Hopefully someone who knows GCC will notice.
It would be interesting if someone could run them on Linux. If the same failures appeared, it would mean the problems are in GCC itself. But if the tests passed on Linux, it might well mean that MinGW is the culprit.
I can run the tests on my Linux virtual machine. But I've not had much luck building GCC. Does anyone have GCC 4.6 weekly snapshot built for Ubuntu?
I ran the test suite for Exception on FreeBSD against trunk r67606 with gcc 4.6.0 20101225 on amd64 with only the following failure: --- errno_test.cpp(31): test '1==*boost::get_error_info<info_errno>(x)' failed in function 'int main()' 1 error detected. --- I cannot run the testsuite with the system compiler (4.2.1) to compare, as the build system for some reason shoves /usr/lib32 into my LD_LIBRARY_PATH, making libc be the wrong bitness. -- Lars Viklund | zao@acc.umu.se

On Sun, Jan 02, 2011 at 11:44:25AM -0500, Beman Dawes wrote:
Although GCC 4.6 isn't released yet, I've been getting good results on a non-Boost project with the weekly MinGW build.
See http://www.equation.com/servlet/equation.cmd?call=fortran for the prebuilt MinGW binaries.
Is there anyone out there who knows enough about GCC and MinGW to tell if this bug is already known?
It might be beneficial to test against the mingw-w64 binaries, as that tends to be a common choice for gcc on Windows. They also have an IRC channel on OFTC if questions arise. There seems to have been quite a few complaints on here and on -users about mingw breaking recently, do we have any platform champion for it or is it second-tier? -- Lars Viklund | zao@acc.umu.se

On 1:59 PM, Lars Viklund wrote:
On Sun, Jan 02, 2011 at 11:44:25AM -0500, Beman Dawes wrote:
Although GCC 4.6 isn't released yet, I've been getting good results on a non-Boost project with the weekly MinGW build.
See http://www.equation.com/servlet/equation.cmd?call=fortran for the prebuilt MinGW binaries.
Is there anyone out there who knows enough about GCC and MinGW to tell if this bug is already known? It might be beneficial to test against the mingw-w64 binaries, as that tends to be a common choice for gcc on Windows. They also have an IRC channel on OFTC if questions arise.
There seems to have been quite a few complaints on here and on -users about mingw breaking recently, do we have any platform champion for it or is it second-tier?
I have a mingw-64 test platform that runs the trunk regression set, GCC 4.6. (And fwiw I run a MinGW-32 regression set w/GCC-4.4.) I'm glad to try something if you send it to me.
participants (5)
-
Beman Dawes
-
Emil Dotchevski
-
Jim Bell
-
Lars Viklund
-
Mathias Gaunard