-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
ALL
-
Security 2019-01-28
-
0
The change to use the abseil hash map implementation for stdx::unordered_map in SERVER-38249 breaks pretty printing of hash maps in GDB when using the standard C++ pretty printer library. Trying to print a simple hash map in GDB now appears like this:
myMap = { <absl::container_internal::raw_hash_map<absl::container_internal::NodeHashMapPolicy<int, int>, absl::hash_internal::Hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >> = { <absl::container_internal::raw_hash_set<absl::container_internal::NodeHashMapPolicy<int, int>, absl::hash_internal::Hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >> = { static kMaxLoadFactorNumerator = 14, static kMaxLoadFactorDenominator = 16, static kMaxLoadFactor = 0.875, ctrl_ = 0x7ffff0eabe20 "\200\200\200\006\200\200\200\200\200\200\200\200\200-\200\377\200\200\200\006\200\200\200\200\200\200\200\200\200-\200", '\253' <repeats 25 times>, "\340\371\352\360\377\177" , slots_ = 0x7ffff0eabe40, size_ = 2, capacity_ = 15, settings_ = { <absl::container_internal::internal_compressed_tuple::CompressedTupleImpl<absl::container_internal::CompressedTuple<unsigned long, absl::hash_internal::Hash<int>, std::equal_to<int>, std::allocato r<std::pair<int const, int> > >, absl::integer_sequence<unsigned long, 0, 1, 2, 3> >> = { <absl::container_internal::internal_compressed_tuple::Storage<absl::container_internal::CompressedTuple<unsigned long, absl::hash_internal::Hash<int>, std::equal_to<int>, std::allocator<std::pai r<int const, int> > >, 0, false>> = { value = 11 }, <absl::container_internal::internal_compressed_tuple::Storage<absl::container_internal::CompressedTuple<unsigned long, absl::hash_internal::Hash<int>, std::equal_to<int>, std::allocator<std::pai r<int const, int> > >, 1, true>> = { <absl::hash_internal::Hash<int>> = { <absl::hash_internal::HashImpl<int>> = {<No data fields>}, <No data fields>}, <No data fields>}, <absl::container_internal::internal_compressed_tuple::Storage<absl::container_internal::CompressedTuple<unsigned long, absl::hash_internal::Hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >, 2, true>> = { <std::equal_to<int>> = { <std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, <No data fields>}, <absl::container_internal::internal_compressed_tuple::Storage<absl::container_internal::CompressedTuple<unsigned long, absl::hash_internal::Hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >, 3, true>> = { <std::allocator<std::pair<int const, int> >> = { <__gnu_cxx::new_allocator<std::pair<int const, int> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>} }, <No data fields>}, <No data fields>}
where it previously would have appeared as
myMap = std::unordered_map with 2 elements = { [2] = 20, [1] = 10 }
- is depended on by
-
SERVER-38823 Re-enable dumping of SessionCatalog in hang analyzer
- Closed
- related to
-
SERVER-38045 Dump session catalog using GDB scripting
- Closed
-
SERVER-38249 stdx::unordered_map should be implemented as absl::node_hash_map
- Closed
-
SERVER-39013 Add gdb pretty printers for absl::flat_hash_map/set
- Closed