resess / Slicer4J

Slicer4J is an accurate, low-overhead dynamic slicer for Java programs.
MIT License
39 stars 17 forks source link

Some missing lines on Voronoi #9

Closed asoifer closed 2 years ago

asoifer commented 2 years ago

Hi, I'm using the Olden's benchmark (with recursive programs) for playing with the tool. I chose Voronoi with the arguments "-n 9", and the line with the println invocation as criterion.

The problem is that there are 2 sliced lines in the output, the line with println and the slicingVariable1B declaration. If I try with -n 2 it works! If I try with -n 3 it doesn't work (and it's not producing the output I don't know why) If I try with -n 9 it works returning only 2 lines. I think the problem is on recursion, but I'm know that is too hard to find these issues... (and if there are issues...)

Vertex.seed = 1023;
Vertex extra = Vertex.createPoints(1, new MyDouble(1.0), points);
Vertex point = Vertex.createPoints(points-1, new MyDouble(extra.X()), points-1);

Edge edge = point.buildDelaunayTriangulation(extra);

Edge slicingVariable1 = edge;
// This is the only line in the slice, and slicingVariable1 is not null
Boolean slicingVariable1B = (slicingVariable1 != null);
Edge[] slicingVariable2 = edge.quadList;
Edge slicingVariable3 = edge.quadList[0];
int slicingVariable4 = edge.listPos;
Vertex slicingVariable5 = edge.vertex;
Edge slicingVariable6 = edge.next;

System.out.println(slicingVariable1B); // I'm slicing this line

I'm attaching the source code and the output (including the trace), except the jars. Voronoi.zip

Thank you so much in advance, Alexis.

khaled-e-a commented 2 years ago

Quick update: still working on this, progress slowed down due to other commitments.

asoifer commented 2 years ago

Thanks for the update! :)

khaled-e-a commented 2 years ago

This is fixed in the latest commits in DynamicSlicingCore and Slicer4J. The slice is much more than 2 lines now. As I don't have a ground truth, I am closing this issue. Please re-open if slice is missing lines.

asoifer commented 2 years ago

Hi Khaled, thanks for your commits and I'm sorry for the late reply. I tried to re-run Voronoi and I'm still watching 2 lines. I checked that I pull and reinstall each library (Core and Slicer). For example, with this sub program (extracted from Voronoi):

Edge edge = point.buildDelaunayTriangulation(extra);
Edge slicingVariable1 = edge;
Boolean slicingVariable1B = (slicingVariable1 != null);
System.out.println(slicingVariable1B);

When I slice from the last line, I'm only getting the last 2 lines, not the first two. I don't know if I'm doing something wrong but it always exists the possibility.

When I have more time, I'll try again this and using it in more examples. Thanks again, Alexis.