Opened 10 years ago

Last modified 9 years ago

#8250 new Bugs

Bug deleting self loop edges in parallel code

Reported by: Borja Miñano <bminyano@…> Owned by: ngedmond
Milestone: To Be Determined Component: graph
Version: Boost 1.53.0 Severity: Problem
Keywords: pbgl, self-loop, parallel, in_edges Cc:

Description

Hello,

I think I found a bug in the graph parallel library. I have a bidirectional adjacency list which has some self loop edges. When I try to delete them with remove_edge_if (or remove_out_edge_if or remove_in_edge_if) the edges are deleted, but it seems that some reference gets broken in the graph. If I iterate over the in_edges a reference to a self loop is found. But it does not happen if I iterate over the out_edges. If the graph is written in a graphviz file the self loop edges does not appear.

I think there is some broken reference into the adjacency list that keeps the in_edges.

I have two different pieces of code (one with pbgl and the other with bgl). They do the same, create a graph, delete the self-edges and print the in_edges.

Could someone have a look at this problem?

Thank you

Attachments (3)

pbgl_in_edges.cpp (6.4 KB ) - added by Borja Miñano <bminyano@…> 10 years ago.
Parallel bgl in_egdes code
bgl_in_edges.cpp (4.3 KB ) - added by Borja Miñano <bminyano@…> 10 years ago.
bgl monoprocessor in_edge code (working)
patchfile.patch (646 bytes ) - added by bminyano@… 9 years ago.
Patch for remove_in_edge

Download all attachments as: .zip

Change History (5)

by Borja Miñano <bminyano@…>, 10 years ago

Attachment: pbgl_in_edges.cpp added

Parallel bgl in_egdes code

comment:1 by Jeremiah Willcock, 10 years ago

Owner: changed from Jeremiah Willcock to ngedmond

by Borja Miñano <bminyano@…>, 10 years ago

Attachment: bgl_in_edges.cpp added

bgl monoprocessor in_edge code (working)

by bminyano@…, 9 years ago

Attachment: patchfile.patch added

Patch for remove_in_edge

comment:2 by bminyano@…, 9 years ago

I propose a patch for this bug. The problem was in remove_in_edge from the distributed adjacency list. The "while" condition had a problem that deleted always the first in_edge in some cases.

Note: See TracTickets for help on using tickets.