On 29.01.2015 10:31, [email protected] wrote:
> Quoting Tiago de Paula Peixoto (2015-01-29 01:14:36)
>> Is the GDB backtrace the same as before? Is the missing symbol also the same?
>
> Yes, with the patch applied, and sparsehash enabled, the backtrace is the 
> same (minor change in the segfault address), and the missing symbol is still 
> _ZNKSt3tr14hashISt6vectorISsSaISsEEEclES3_
>
> Full test log:
>
> https://537042.bugs.gentoo.org/attachment.cgi?id=395102

The patch attached should finally take care of it. Could you please test it?

Best,
Tiago

-- 
Tiago de Paula Peixoto <[email protected]>
From 23cf38bfe1a3fbfd2c5a179122639f3c3e3cde7e Mon Sep 17 00:00:00 2001
From: Tiago de Paula Peixoto <[email protected]>
Date: Wed, 28 Jan 2015 21:38:38 +0100
Subject: [PATCH] Remove implicit references to tr1::hash<>

---
 src/graph/clustering/graph_clustering.hh |  2 +-
 src/graph/generation/graph_generation.hh |  3 +--
 src/graph/generation/graph_geometric.hh  |  3 +--
 src/graph/generation/graph_rewiring.hh   | 38 ++++++++++++++++++--------------
 src/graph/graph_properties.cc            |  4 ++--
 src/graph/layout/graph_sfdp.cc           |  4 +---
 src/graph/stats/graph_parallel.hh        |  4 ++--
 src/graph/topology/graph_similarity.hh   | 12 +++++-----
 8 files changed, 34 insertions(+), 36 deletions(-)

diff --git a/src/graph/clustering/graph_clustering.hh b/src/graph/clustering/graph_clustering.hh
index 209c269..a18a244 100644
--- a/src/graph/clustering/graph_clustering.hh
+++ b/src/graph/clustering/graph_clustering.hh
@@ -56,7 +56,7 @@ get_triangles(typename graph_traits<Graph>::vertex_descriptor v, const Graph &g)
     typedef typename graph_traits<Graph>::vertex_descriptor vertex_t;
 
 #ifdef HAVE_SPARSEHASH
-    typedef dense_hash_set<vertex_t> set_t;
+    typedef dense_hash_set<vertex_t, std::hash<vertex_t>> set_t;
 #else
     typedef unordered_set<vertex_t> set_t;
 #endif
diff --git a/src/graph/generation/graph_generation.hh b/src/graph/generation/graph_generation.hh
index b8a275c..3102a96 100644
--- a/src/graph/generation/graph_generation.hh
+++ b/src/graph/generation/graph_generation.hh
@@ -465,8 +465,7 @@ struct gen_graph
         set<deg_t, cmp_in<greater<size_t> > > targets;
 
         // vertices with a given degree
-        unordered_map<deg_t, vector<size_t>,
-                      boost::hash<deg_t> > vset;
+        unordered_map<deg_t, vector<size_t>> vset;
 
         size_t num_e = 0;
         for (size_t i = 0; i < vertices.size();  ++i)
diff --git a/src/graph/generation/graph_geometric.hh b/src/graph/generation/graph_geometric.hh
index a13b005..682874a 100644
--- a/src/graph/generation/graph_geometric.hh
+++ b/src/graph/generation/graph_geometric.hh
@@ -121,8 +121,7 @@ struct get_geometric
         }
 
         std::unordered_multimap<vector<int>,
-                                typename graph_traits<Graph>::vertex_descriptor,
-                                boost::hash<vector<int> > > boxes;
+                                typename graph_traits<Graph>::vertex_descriptor> boxes;
 
         for (int i = 0; i < N; ++i)
         {
diff --git a/src/graph/generation/graph_rewiring.hh b/src/graph/generation/graph_rewiring.hh
index aeda72d..6f266b6 100644
--- a/src/graph/generation/graph_rewiring.hh
+++ b/src/graph/generation/graph_rewiring.hh
@@ -527,9 +527,9 @@ protected:
     rng_t& _rng;
 
 #ifdef HAVE_SPARSEHASH
-        typedef google::dense_hash_map<size_t, size_t> nmapv_t;
+    typedef google::dense_hash_map<size_t, size_t, std::hash<size_t>> nmapv_t;
 #else
-        typedef unordered_map<size_t, size_t> nmapv_t;
+    typedef unordered_map<size_t, size_t> nmapv_t;
 #endif
     typedef typename property_map_type::apply<nmapv_t,
                                               typename property_map<Graph, vertex_index_t>::type>
@@ -668,12 +668,11 @@ private:
 #ifdef HAVE_SPARSEHASH
     typedef google::dense_hash_map<deg_t,
                                    vector<pair<size_t, bool>>,
-                                   boost::hash<deg_t>>
+                                   std::hash<deg_t>>
         edges_by_end_deg_t;
 #else
     typedef std::unordered_map<deg_t,
-                               vector<pair<size_t, bool>>,
-                               boost::hash<deg_t>>
+                               vector<pair<size_t, bool>>>
         edges_by_end_deg_t;
 #endif
 
@@ -724,7 +723,7 @@ public:
 
             if (_probs.empty())
             {
-                std::unordered_set<deg_t, boost::hash<deg_t> > deg_set;
+                std::unordered_set<deg_t> deg_set;
                 for (size_t ei = 0; ei < base_t::_edges.size(); ++ei)
                 {
                     edge_t& e = base_t::_edges[ei];
@@ -826,10 +825,9 @@ private:
 
 #ifdef HAVE_SPARSEHASH
     typedef google::dense_hash_map<pair<deg_t, deg_t>, double,
-                                   boost::hash<pair<deg_t, deg_t>>> prob_map_t;
+                                   std::hash<pair<deg_t, deg_t>>> prob_map_t;
 #else
-    typedef std::unordered_map<pair<deg_t, deg_t>, double,
-                               boost::hash<pair<deg_t, deg_t>>> prob_map_t;
+    typedef std::unordered_map<pair<deg_t, deg_t>, double> prob_map_t;
 #endif
 
     prob_map_t _probs;
@@ -1185,7 +1183,8 @@ private:
     BlockDeg _blockdeg;
 
 #ifdef HAVE_SPARSEHASH
-    typedef google::dense_hash_map<deg_t, Sampler<deg_t, boost::mpl::false_>*> sampler_map_t;
+    typedef google::dense_hash_map<deg_t, Sampler<deg_t, boost::mpl::false_>*,
+                                   std::hash<deg_t>> sampler_map_t;
 #else
     typedef std::unordered_map<deg_t, Sampler<deg_t, boost::mpl::false_>*> sampler_map_t;
 #endif
@@ -1193,7 +1192,10 @@ private:
     sampler_map_t _sampler;
 
 #ifdef HAVE_SPARSEHASH
-    typedef google::dense_hash_map<deg_t, google::dense_hash_map<deg_t, double>> sprob_map_t;
+    typedef google::dense_hash_map<deg_t,
+                                   google::dense_hash_map<deg_t, double,
+                                                          std::hash<deg_t>>,
+                                   std::hash<deg_t>> sprob_map_t;
 #else
     typedef std::unordered_map<deg_t, std::unordered_map<deg_t, double>> sprob_map_t;
 #endif
@@ -1202,15 +1204,17 @@ private:
 
 
 #ifdef HAVE_SPARSEHASH
-    typedef google::dense_hash_map<pair<deg_t, deg_t>, double, boost::hash<pair<deg_t, deg_t>>> prob_map_t;
+    typedef google::dense_hash_map<pair<deg_t, deg_t>, double,
+                                   std::hash<pair<deg_t, deg_t>>> prob_map_t;
 #else
-    typedef std::unordered_map<pair<deg_t, deg_t>, double, boost::hash<pair<deg_t, deg_t>>> prob_map_t;
+    typedef std::unordered_map<pair<deg_t, deg_t>, double> prob_map_t;
 #endif
 
     prob_map_t _probs;
 
 #ifdef HAVE_SPARSEHASH
-    typedef google::dense_hash_map<deg_t, vector<size_t>> edge_map_t;
+    typedef google::dense_hash_map<deg_t, vector<size_t>,
+                                   std::hash<deg_t>> edge_map_t;
 #else
     typedef std::unordered_map<deg_t, vector<size_t>> edge_map_t;
 #endif
@@ -1253,8 +1257,7 @@ public:
             _vertices[d].push_back(*v);
         }
 
-        std::unordered_map<pair<deg_t, deg_t>, double, boost::hash<pair<deg_t, deg_t> > >
-            probs;
+        std::unordered_map<pair<deg_t, deg_t>, double> probs;
         _corr_prob.get_probs(probs);
 
         vector<double> dprobs;
@@ -1347,7 +1350,8 @@ private:
     rng_t& _rng;
 
 #ifdef HAVE_SPARSEHASH
-    google::dense_hash_map<deg_t, vector<vertex_t>> _vertices;
+    google::dense_hash_map<deg_t, vector<vertex_t>,
+                           std::hash<deg_t>> _vertices;
 #else
     std::unordered_map<deg_t, vector<vertex_t>> _vertices;
 #endif
diff --git a/src/graph/graph_properties.cc b/src/graph/graph_properties.cc
index 78f0400..521cd68 100644
--- a/src/graph/graph_properties.cc
+++ b/src/graph/graph_properties.cc
@@ -252,7 +252,7 @@ struct do_perfect_vhash
     {
         typedef typename property_traits<VertexPropertyMap>::value_type val_t;
         typedef typename property_traits<HashProp>::value_type hash_t;
-        typedef unordered_map<val_t, hash_t, boost::hash<val_t>> dict_t;
+        typedef unordered_map<val_t, hash_t> dict_t;
 
         if (adict.empty())
             adict = dict_t();
@@ -291,7 +291,7 @@ struct do_perfect_ehash
     {
         typedef typename property_traits<EdgePropertyMap>::value_type val_t;
         typedef typename property_traits<HashProp>::value_type hash_t;
-        typedef unordered_map<val_t, hash_t, boost::hash<val_t>> dict_t;
+        typedef unordered_map<val_t, hash_t> dict_t;
 
         if (adict.empty())
             adict = dict_t();
diff --git a/src/graph/layout/graph_sfdp.cc b/src/graph/layout/graph_sfdp.cc
index e78ce1c..0864283 100644
--- a/src/graph/layout/graph_sfdp.cc
+++ b/src/graph/layout/graph_sfdp.cc
@@ -96,9 +96,7 @@ struct do_propagate_pos
         typedef typename pos_t::value_type val_t;
 
         uniform_real_distribution<val_t> noise(-delta, delta);
-        unordered_map<c_t, pos_t, boost::hash<c_t> >
-            cmap(num_vertices(*cg));
-
+        unordered_map<c_t, pos_t> cmap(num_vertices(*cg));
 
         for (auto v : vertices_range(*cg))
             cmap[cvmap[v]] = cpos[v];
diff --git a/src/graph/stats/graph_parallel.hh b/src/graph/stats/graph_parallel.hh
index de164cc..84513b6 100644
--- a/src/graph/stats/graph_parallel.hh
+++ b/src/graph/stats/graph_parallel.hh
@@ -51,9 +51,9 @@ struct label_parallel_edges
                 continue;
 
 #ifdef HAVE_SPARSEHASH
-            google::dense_hash_map<vertex_t, edge_t> vset;
+            google::dense_hash_map<vertex_t, edge_t, std::hash<vertex_t>> vset;
             vset.set_empty_key(graph_traits<Graph>::null_vertex());
-            google::dense_hash_map<size_t, bool> self_loops;
+            google::dense_hash_map<size_t, bool, std::hash<size_t>> self_loops;
             self_loops.set_empty_key(numeric_limits<size_t>::max());
 #else
             unordered_map<vertex_t, edge_t> vset;
diff --git a/src/graph/topology/graph_similarity.hh b/src/graph/topology/graph_similarity.hh
index 4b0dd76..05cc4c3 100644
--- a/src/graph/topology/graph_similarity.hh
+++ b/src/graph/topology/graph_similarity.hh
@@ -53,11 +53,9 @@ struct get_similarity
 
         typedef typename property_traits<LabelMap>::value_type label_t;
 
-        std::unordered_map<label_t, typename graph_traits<Graph1>::vertex_descriptor,
-                           boost::hash<label_t>>
+        std::unordered_map<label_t, typename graph_traits<Graph1>::vertex_descriptor>
             lmap1;
-        std::unordered_map<label_t, typename graph_traits<Graph2>::vertex_descriptor,
-                           boost::hash<label_t>>
+        std::unordered_map<label_t, typename graph_traits<Graph2>::vertex_descriptor>
             lmap2;
 
         for (auto v : vertices_range(g1))
@@ -75,9 +73,9 @@ struct get_similarity
                 continue;
             auto v2 = li2->second;
 
-            std::unordered_set<label_t, boost::hash<label_t>> keys;
-            std::unordered_multiset<label_t, boost::hash<label_t>> adj1;
-            std::unordered_multiset<label_t, boost::hash<label_t>> adj2;
+            std::unordered_set<label_t> keys;
+            std::unordered_multiset<label_t> adj1;
+            std::unordered_multiset<label_t> adj2;
 
             for (auto a1 : adjacent_vertices_range(v1, g1))
             {
-- 
2.2.2

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
graph-tool mailing list
[email protected]
http://lists.skewed.de/mailman/listinfo/graph-tool

Reply via email to