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