[conversion] Need a help with MSVC failures
Hi, Some of the tests for Boost.LexicalCast fail on any MSVC compiler. Unfortunately currently I have no access to Windows. Could someone please investigate the failures and tell me were to search the bug? -- Best regards, Antony Polukhin
On 1/30/2014 12:24 AM, Antony Polukhin wrote:
Hi,
Some of the tests for Boost.LexicalCast fail on any MSVC compiler. Unfortunately currently I have no access to Windows.
Could someone please investigate the failures and tell me were to search the bug?
From where are the lexical_cast tests run in modular-boost ?
2014-01-30 Edward Diener
On 1/30/2014 12:24 AM, Antony Polukhin wrote:
Hi,
Some of the tests for Boost.LexicalCast fail on any MSVC compiler. Unfortunately currently I have no access to Windows.
Could someone please investigate the failures and tell me were to search the bug?
From where are the lexical_cast tests run in modular-boost ?
boost/libs/conversion/test/ -- Best regards, Antony Polukhin
On 1/30/2014 3:14 AM, Antony Polukhin wrote:
2014-01-30 Edward Diener
On 1/30/2014 12:24 AM, Antony Polukhin wrote:
Hi,
Some of the tests for Boost.LexicalCast fail on any MSVC compiler. Unfortunately currently I have no access to Windows.
Could someone please investigate the failures and tell me were to search the bug?
From where are the lexical_cast tests run in modular-boost ?
boost/libs/conversion/test/
I assume this is in the develop branch tests. Running the tests on my
machine, with msvc-12.0 I see two failures.
First is:
lexical_cast_loopback_test.cpp(55): error in
"test_round_conversion_double": check min_ == lexical_cast<T>(min_s) failed
lexical_cast_loopback_test.cpp(55): error in
"test_round_conversion_long_double": check min_ ==
lexical_cast<T>(min_s) failed
This looks like the roundtrip conversion with double and long double is
not accurate enough.
Second is:
lexical_cast_containers_test.cpp
C:\Programming\VersionControl\modular-boost\boost/intrusive/detail/has_member_function_callable_with.hpp(200)
: error C2228: left of '.select_on_container_copy_construction' must
have class/struct/union
type is 'boost::move_detail::add_rvalue_reference<U>::type'
C:\Programming\VersionControl\modular-boost\boost/intrusive/detail/has_member_function_callable_with.hpp(276)
: see reference to class template instantiation
'boost::container::container_detail::has_member_function_callable_with_select_on_container_copy_construction_impl
2014-01-30 Edward Diener
On 1/30/2014 3:14 AM, Antony Polukhin wrote:
2014-01-30 Edward Diener
On 1/30/2014 12:24 AM, Antony Polukhin wrote:
Hi,
Some of the tests for Boost.LexicalCast fail on any MSVC compiler. Unfortunately currently I have no access to Windows.
Could someone please investigate the failures and tell me were to search the bug?
From where are the lexical_cast tests run in modular-boost ?
boost/libs/conversion/test/
I assume this is in the develop branch tests. Running the tests on my machine, with msvc-12.0 I see two failures.
First is:
lexical_cast_loopback_test.cpp(55): error in "test_round_conversion_double": check min_ == lexical_cast<T>(min_s) failed lexical_cast_loopback_test.cpp(55): error in "test_round_conversion_long_double": check min_ == lexical_cast<T>(min_s) failed
This looks like the roundtrip conversion with double and long double is not accurate enough.
It's a known and ancient error on MSVC.
Second is:
lexical_cast_containers_test.cpp C:\Programming\VersionControl\modular-boost\boost/intrusive/ detail/has_member_function_callable_with.hpp(200) : error C2228: left of '.select_on_container_copy_construction' must have class/struct/union type is 'boost::move_detail::add_rvalue_reference<U>::type'
C:\Programming\VersionControl\modular-boost\boost/intrusive/ detail/has_member_function_callable_with.hpp(276) : see reference to class template instantiation 'boost::container::container_ detail::has_member_function_callable_with_select_on_ container_copy_construction_impl
' being compiled with [ Fun=std::allocator<char> ] C:\Programming\VersionControl\modular-boost\boost/container/allocator_traits.hpp(262) : see reference to class template instantiation 'boost::container::container_detail::has_member_function_ callable_with_select_on_container_copy_construction
' being compiled with [ Alloc=std::allocator<char> ] C:\Programming\VersionControl\modular-boost\boost/container/string.hpp(76) : see reference to class template instantiation 'boost::container::allocator_traits<Allocator>' being compiled with [ Allocator=std::allocator<char> ]
C:\Programming\VersionControl\modular-boost\boost/container/string.hpp(473) : see reference to class template instantiation 'boost::container::container_detail::basic_string_base<Allocator>' being compiled with [ Allocator=std::allocator<char> ] lexical_cast_containers_test.cpp(35) : see reference to class template instantiation 'boost::container::basic_ string
' being compiled It looks like 'boost::move_detail::declval<F>()' is not resolving to anything but I will let you figure this out.
It's a Boost.Container library issue. I think maintainer knows about it: that issue sometimes appear in develop branch, and always get fixed in a few weeks.
One thing I noticed. The tester must run 'b2 headers' after getting the conversion 'develop' branch and before running the tests. This is because of the hard link issue I have brought up a number of times on this mailing list.
Yep, that annoys sometimes. Thanks a lot for helping! But regression tests still report a lot of errors on MSVC: http://www.boost.org/development/tests/develop/developer/conversion.html Could you please run same tests using Boost.Test from 'develop' branch? I think now that errors came from Boost.Test library. -- Best regards, Antony Polukhin
On 1/30/2014 3:18 PM, Antony Polukhin wrote:
2014-01-30 Edward Diener
On 1/30/2014 3:14 AM, Antony Polukhin wrote:
2014-01-30 Edward Diener
On 1/30/2014 12:24 AM, Antony Polukhin wrote:
Hi,
Some of the tests for Boost.LexicalCast fail on any MSVC compiler. Unfortunately currently I have no access to Windows.
Could someone please investigate the failures and tell me were to search the bug?
From where are the lexical_cast tests run in modular-boost ?
boost/libs/conversion/test/
I assume this is in the develop branch tests. Running the tests on my machine, with msvc-12.0 I see two failures.
First is:
lexical_cast_loopback_test.cpp(55): error in "test_round_conversion_double": check min_ == lexical_cast<T>(min_s) failed lexical_cast_loopback_test.cpp(55): error in "test_round_conversion_long_double": check min_ == lexical_cast<T>(min_s) failed
This looks like the roundtrip conversion with double and long double is not accurate enough.
It's a known and ancient error on MSVC.
Second is:
lexical_cast_containers_test.cpp C:\Programming\VersionControl\modular-boost\boost/intrusive/ detail/has_member_function_callable_with.hpp(200) : error C2228: left of '.select_on_container_copy_construction' must have class/struct/union type is 'boost::move_detail::add_rvalue_reference<U>::type'
C:\Programming\VersionControl\modular-boost\boost/intrusive/ detail/has_member_function_callable_with.hpp(276) : see reference to class template instantiation 'boost::container::container_ detail::has_member_function_callable_with_select_on_ container_copy_construction_impl
' being compiled with [ Fun=std::allocator<char> ] C:\Programming\VersionControl\modular-boost\boost/container/allocator_traits.hpp(262) : see reference to class template instantiation 'boost::container::container_detail::has_member_function_ callable_with_select_on_container_copy_construction
' being compiled with [ Alloc=std::allocator<char> ] C:\Programming\VersionControl\modular-boost\boost/container/string.hpp(76) : see reference to class template instantiation 'boost::container::allocator_traits<Allocator>' being compiled with [ Allocator=std::allocator<char> ]
C:\Programming\VersionControl\modular-boost\boost/container/string.hpp(473) : see reference to class template instantiation 'boost::container::container_detail::basic_string_base<Allocator>' being compiled with [ Allocator=std::allocator<char> ] lexical_cast_containers_test.cpp(35) : see reference to class template instantiation 'boost::container::basic_ string
' being compiled It looks like 'boost::move_detail::declval<F>()' is not resolving to anything but I will let you figure this out.
It's a Boost.Container library issue. I think maintainer knows about it: that issue sometimes appear in develop branch, and always get fixed in a few weeks.
Actually with the latest 'develop' change in 'intrusive' the second error no longer ococurs.
One thing I noticed. The tester must run 'b2 headers' after getting the conversion 'develop' branch and before running the tests. This is because of the hard link issue I have brought up a number of times on this mailing list.
Yep, that annoys sometimes.
Thanks a lot for helping! But regression tests still report a lot of errors on MSVC: http://www.boost.org/development/tests/develop/developer/conversion.html Could you please run same tests using Boost.Test from 'develop' branch? I think now that errors came from Boost.Test library.
I will try that and report back.
On 1/30/2014 3:18 PM, Antony Polukhin wrote:
2014-01-30 Edward Diener
On 1/30/2014 3:14 AM, Antony Polukhin wrote:
2014-01-30 Edward Diener
On 1/30/2014 12:24 AM, Antony Polukhin wrote:
Hi,
Some of the tests for Boost.LexicalCast fail on any MSVC compiler. Unfortunately currently I have no access to Windows.
Could someone please investigate the failures and tell me were to search the bug?
From where are the lexical_cast tests run in modular-boost ?
boost/libs/conversion/test/
I assume this is in the develop branch tests. Running the tests on my machine, with msvc-12.0 I see two failures.
First is:
lexical_cast_loopback_test.cpp(55): error in "test_round_conversion_double": check min_ == lexical_cast<T>(min_s) failed lexical_cast_loopback_test.cpp(55): error in "test_round_conversion_long_double": check min_ == lexical_cast<T>(min_s) failed
This looks like the roundtrip conversion with double and long double is not accurate enough.
It's a known and ancient error on MSVC.
Second is:
lexical_cast_containers_test.cpp C:\Programming\VersionControl\modular-boost\boost/intrusive/ detail/has_member_function_callable_with.hpp(200) : error C2228: left of '.select_on_container_copy_construction' must have class/struct/union type is 'boost::move_detail::add_rvalue_reference<U>::type'
C:\Programming\VersionControl\modular-boost\boost/intrusive/ detail/has_member_function_callable_with.hpp(276) : see reference to class template instantiation 'boost::container::container_ detail::has_member_function_callable_with_select_on_ container_copy_construction_impl
' being compiled with [ Fun=std::allocator<char> ] C:\Programming\VersionControl\modular-boost\boost/container/allocator_traits.hpp(262) : see reference to class template instantiation 'boost::container::container_detail::has_member_function_ callable_with_select_on_container_copy_construction
' being compiled with [ Alloc=std::allocator<char> ] C:\Programming\VersionControl\modular-boost\boost/container/string.hpp(76) : see reference to class template instantiation 'boost::container::allocator_traits<Allocator>' being compiled with [ Allocator=std::allocator<char> ]
C:\Programming\VersionControl\modular-boost\boost/container/string.hpp(473) : see reference to class template instantiation 'boost::container::container_detail::basic_string_base<Allocator>' being compiled with [ Allocator=std::allocator<char> ] lexical_cast_containers_test.cpp(35) : see reference to class template instantiation 'boost::container::basic_ string
' being compiled It looks like 'boost::move_detail::declval<F>()' is not resolving to anything but I will let you figure this out.
It's a Boost.Container library issue. I think maintainer knows about it: that issue sometimes appear in develop branch, and always get fixed in a few weeks.
One thing I noticed. The tester must run 'b2 headers' after getting the conversion 'develop' branch and before running the tests. This is because of the hard link issue I have brought up a number of times on this mailing list.
Yep, that annoys sometimes.
Thanks a lot for helping! But regression tests still report a lot of errors on MSVC: http://www.boost.org/development/tests/develop/developer/conversion.html Could you please run same tests using Boost.Test from 'develop' branch? I think now that errors came from Boost.Test library.
The issue is not Boost.Test but from something else in the 'develop' branch which either lexical_cast or the lexical_cast tests depend on. If I change completely to the current top-level 'develop' branch, updating all submodules to 'develop', and run the conversion tests I see about 10 crashes when the tests are run. However if I change to the top-level master branch, update all submodules to master, update lexical_cast, intrusive, and Boost test to 'develop', there is only the round-trip, for double and long double, occuring and no crashes.
Am 30.01.2014 06:24 schrieb Antony Polukhin:
Some of the tests for Boost.LexicalCast fail on any MSVC compiler. Unfortunately currently I have no access to Windows.
I can run as many tests with vc10, vc11 and vc12 for you as you like.
This is one of the failing cases:
-----------------------------------------------
#include
2014-01-31 Daniela Engert
Am 30.01.2014 06:24 schrieb Antony Polukhin:
Some of the tests for Boost.LexicalCast fail on any MSVC compiler. Unfortunately currently I have no access to Windows.
I can run as many tests with vc10, vc11 and vc12 for you as you like.
This is one of the failing cases:
----------------------------------------------- #include
#include meerkat::CatchUnhandledExceptions CrashHandler;
int main() { char A = boost::lexical_cast<char>("A"); } -----------------------------------------------
which causes
*** Fri Jan 31 17:59:12 2014 *** Unhandled Structured Exception C0000005 @ 0x000B1151 (continuable) Access denied while writing @ 0x00000000 iosfwd (523): std::char_traits<char>::length + 0x3 lexical_cast.hpp (1378):
boost::detail::lexical_istream_limited_src
::shl_char_array + 0x9 lexical_cast.hpp (1600): boost::detail::lexical_istream_limited_src
::operator<< + 0x2f lexical_cast.hpp (2083): boost::detail::lexical_converter_impl ::try_convert + 0xe lexical_cast.hpp (2301): boost::conversion::detail::try_lexical_convert + 0x1b lexical_cast.hpp (2328): boost::lexical_cast + 0xd main.cpp (8): main + 0xa crtexe.c (536): __tmainCRTStartup + 0x19 crtexe.c (377): mainCRTStartup 7704336A (kernel32): BaseThreadInitThunk + 0x12 77929F72 (ntdll): RtlInitializeExceptionChain + 0x63 77929F45 (ntdll): RtlInitializeExceptionChain + 0x36 *** boost::detail::lexical_converter_impl
::try_convert's signature in line 2076 is bool(const char * const &, char &). 'arg' is 0x00000041.
That's a good place for me to start! Thanks for finding that out! -- Best regards, Antony Polukhin
participants (3)
-
Antony Polukhin
-
Daniela Engert
-
Edward Diener