include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
causes invalid memory access on Linux/ia32 and Linux/Intel64. You can see
it by adding -D_GLIBCXX_DEBUG to ext/pb_ds/regression/trie_data_map_rand.cc:

bash-3.2$ /export/build/gnu/gcc-work/build-x86_64-linux/./gcc/g++
-shared-libgcc -B/export/build/gnu/gcc-work/build-x86_64-linux/./gcc
-nostdinc++
-L/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/src
-L/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/src/.libs
-B/usr/gcc-4.4-work/x86_64-unknown-linux-gnu/bin/
-B/usr/gcc-4.4-work/x86_64-unknown-linux-gnu/lib/ -isystem
/usr/gcc-4.4-work/x86_64-unknown-linux-gnu/include -isystem
/usr/gcc-4.4-work/x86_64-unknown-linux-gnu/sys-include -m32 -g -O2
-D_GLIBCXX_ASSERT -fmessage-length=0 -ffunction-sections -fdata-sections -g -O2
-D_GNU_SOURCE -g -O2   -D_GNU_SOURCE   -DLOCALEDIR="." -nostdinc++
-I/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include
-I/export/gnu/src/gcc-work/gcc/libstdc++-v3/libsupc++
-I/export/gnu/src/gcc-work/gcc/libstdc++-v3/include/backward
-I/export/gnu/src/gcc-work/gcc/libstdc++-v3/testsuite/util -Wl,--gc-sections
/export/gnu/src/gcc-work/gcc/libstdc++-v3/testsuite/ext/pb_ds/regression/trie_data_map_rand.cc
  -DPB_DS_REGRESSION ./libtestc++.a  -lm   -m32 -o ./trie_data_map_rand.exe 
-D_GLIBCXX_DEBUG
bash-3.2$ ./trie_data_map_rand.exe
/export/build/gnu/gcc-work/build-x86_64-linux/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp:213:
typename __gnu_pbds::detail::pat_trie_data_<Key, Mapped, Node_And_It_Traits,
Allocator>::node_pointer __gnu_pbds::detail::pat_trie_data_<Key, Mapped,
Node_And_It_Traits, Allocator>::recursive_copy_node(typename
Allocator::rebind<typename Node_And_It_Traits::node>::other::const_pointer)
[with Key = __gnu_pbds::test::basic_type, Mapped =
__gnu_pbds::test::basic_type, Node_And_It_Traits =
__gnu_pbds::detail::trie_traits<__gnu_pbds::test::basic_type,
__gnu_pbds::test::basic_type,
__gnu_pbds::string_trie_e_access_traits<__gnu_pbds::test::basic_type, 'a', 'd',
false, __gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >,
__gnu_pbds::null_trie_node_update, __gnu_pbds::pat_trie_tag,
__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >, Allocator =
__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>]: Assertion 'child_i >
1' failed.
Aborted
bash-3.2$


-- 
           Summary: A bug in
                    include/ext/pb_ds/detail/pat_trie_/constructors_destruct
                    or_fn_imps.hpp
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hjl dot tools at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37144

Reply via email to