#9053 closed Bugs (duplicate)
Infinite recursion assigning "const any" with GCC 4.8 in C++11 mode
| Reported by: | Owned by: | nasonov | |
|---|---|---|---|
| Milestone: | Boost 1.55.0 | Component: | any | 
| Version: | Boost 1.54.0 | Severity: | Problem | 
| Keywords: | Cc: | 
Description
Infinite recursion assigning "const any" with GCC 4.8 in C++11 mode
because "boost::disable_if<boost::is_same<any&, ValueType> >"
is not triggered with a "const any".
This leads to infinite recursion at run time with no compiler warnings.
Happens with Boost 1.54.0 and boost-trunk.
$ cat test-any.cpp
#include <iostream>
#include <boost/any.hpp>
int main() {
    const boost::any a = 1;
    boost::any x = a;
    std::cout << boost::any_cast<int>(x) << std::endl;
    return 0;
}
$ g++ -g --std=c++11 -pedantic -Wall -Wextra -I ~/boost-trunk test-any.cpp
$ gdb ./a.out
(gdb) r
Starting program: a.out
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff731f2e7 in _int_malloc () from /lib64/libc.so.6
(gdb) bt -10
#224597 0x0000000000401399 in boost::any::any<boost::any const>(boost::any const&&, boost::disable_if<boost::is_same<boost::any&, boost::any const>, void>::type*) (
    this=0x604098, value=<unknown type in a.out, CU 0x0, DIE 0x4300>) at boost-trunk/boost/any.hpp:80
#224598 0x00000000004014fa in boost::any::holder<boost::any const>::holder(boost::any const&&) (this=0x604090,
    value=<unknown type in a.out, CU 0x0, DIE 0x44e1>) at boost-trunk/boost/any.hpp:188
#224599 0x0000000000401399 in boost::any::any<boost::any const>(boost::any const&&, boost::disable_if<boost::is_same<boost::any&, boost::any const>, void>::type*) (
    this=0x604078, value=<unknown type in a.out, CU 0x0, DIE 0x4300>) at boost-trunk/boost/any.hpp:80
#224600 0x00000000004014fa in boost::any::holder<boost::any const>::holder(boost::any const&&) (this=0x604070,
    value=<unknown type in a.out, CU 0x0, DIE 0x44e1>) at boost-trunk/boost/any.hpp:188
#224601 0x0000000000401399 in boost::any::any<boost::any const>(boost::any const&&, boost::disable_if<boost::is_same<boost::any&, boost::any const>, void>::type*) (
    this=0x604058, value=<unknown type in a.out, CU 0x0, DIE 0x4300>) at boost-trunk/boost/any.hpp:80
#224602 0x00000000004014fa in boost::any::holder<boost::any const>::holder(boost::any const&&) (this=0x604050,
    value=<unknown type in a.out, CU 0x0, DIE 0x44e1>) at boost-trunk/boost/any.hpp:188
#224603 0x0000000000401399 in boost::any::any<boost::any const>(boost::any const&&, boost::disable_if<boost::is_same<boost::any&, boost::any const>, void>::type*) (
    this=0x604038, value=<unknown type in a.out, CU 0x0, DIE 0x4300>) at boost-trunk/boost/any.hpp:80
#224604 0x00000000004014fa in boost::any::holder<boost::any const>::holder(boost::any const&&) (this=0x604030,
    value=<unknown type in a.out, CU 0x0, DIE 0x44e1>) at boost-trunk/boost/any.hpp:188
#224605 0x0000000000401399 in boost::any::any<boost::any const>(boost::any const&&, boost::disable_if<boost::is_same<boost::any&, boost::any const>, void>::type*) (
    this=0x7fffffffdcb0, value=<unknown type in a.out, CU 0x0, DIE 0x4300>) at boost-trunk/boost/any.hpp:80
#224606 0x0000000000400e20 in main () at test-any.cpp:5
      Change History (3)
comment:1 by , 9 years ago
| Milestone: | To Be Determined → Boost 1.55.0 | 
|---|---|
| Resolution: | → duplicate | 
| Status: | new → closed | 
comment:2 by , 9 years ago
You mean this is a duplicate of #9215; otherwise we get an infinite recursion of bugs.
comment:3 by , 9 years ago
Every bug is an exact duplicate of itself. But this one is also a duplicate of #9215.
Thanks for the comment, it clarifies the situation!
  Note:
 See   TracTickets
 for help on using tickets.
    

Fixed. This is a duplicate of #9053