hi, i started using BGL for my project. strangely all the examples i tried to learn BGL worked fine. But when i write the actual code for my project, it started giving me this error. Problem: While adding second edge to the boost graph using boost::add_edge(u,v,g) it is giving out a seg fault. Please help with this prob. Iam also attaching the code that's giving the error /*********Code that's giving this error****************/ #include<iostream> #include<vector> #include<string> #include<queue> #include<stdlib.h> #include<string> #include<sstream> #include<boost/graph/graph_traits.hpp> #include<boost/graph/adjacency_list.hpp> class Node{ public: std::string id; double Energy; Node() {} }; class EdgeProperties { public: int targetI; int sourceI; EdgeProperties(int s,int t):sourceI(s),targetI(t) { } }; typedef boost::adjacency_list<boost::listS,boost::listS,boost::bidirectionalS, Node *,EdgeProperties *> Graph; typedef boost::graph_traits<Graph> GraphTraits; typedef GraphTraits::vertex_descriptor Vertex; typedef GraphTraits::edge_descriptor Edge; namespace boost { Vertex getVertexbyId(std::string id,Graph g){ std::cout << "getVID called for " << id << std::endl; fflush(stdout); GraphTraits::vertex_iterator vstart,vend; for(boost::tie(vstart,vend) = boost::vertices(g); vstart!=vend; vstart++) { if(g[*vstart]->id == (id)) return *vstart; } std::cout << "Critical Error: |" << id << "| referencing node not present in graph " << std::endl; return NULL; } } int main(){ Graph g; // populate Graph with all the vertices and edges. std::cout << "* Populating graph with Vertices and Edges " << std::endl; fflush(stdout); Vertex v = boost::add_vertex(g); g[v] = new Node(); g[v]->id = "xor_1"; g[v]->Energy = 2.3; std::cout << "Inserted xor_1" << std::endl; fflush(stdout); v = boost::add_vertex(g); g[v] = (new Node()); g[v]->id = "and_1"; g[v]->Energy = 1.9; std::cout << "Inserted and_1" << std::endl; fflush(stdout); v = boost::add_vertex(g); g[v] = (new Node()); g[v]->id = "i_1"; std::cout << "Inserted i_1" << std::endl; fflush(stdout); // add Edges std::pair<Edge,bool> e; EdgeProperties *ep = new EdgeProperties(1,1); e = boost::add_edge(boost::getVertexbyId("i_1",g),boost::getVertexbyId("and_1",g),ep,g); std::cout << "Inserted Edge 1" << std::endl; fflush(stdout); ep = new EdgeProperties(1,2); e = boost::add_edge(boost::getVertexbyId("i_1",g),boost::getVertexbyId("xor_1",g),ep,g); std::cout << "Inserted Edge 2" << std::endl; fflush(stdout); } /*******************************************************/ - Phani.