CXXGraph icon indicating copy to clipboard operation
CXXGraph copied to clipboard

Test failed on MacOS?

Open badumbatish opened this issue 1 year ago • 11 comments

I'm trying to git clone and build and try running the tests after moving to Mac and I'm not sure why the tests are failing?

I'm on M2 macOS 14.4.1 23E224 arm64

Running Test for CXXGraph Version 3.1.0
[==========] Running 300 tests from 42 test suites.
[----------] Global test environment set-up.
[----------] 13 tests from BFSTest
[ RUN      ] BFSTest.test_1
[       OK ] BFSTest.test_1 (0 ms)
[ RUN      ] BFSTest.test_2
[       OK ] BFSTest.test_2 (0 ms)
[ RUN      ] BFSTest.test_3
[       OK ] BFSTest.test_3 (0 ms)
[ RUN      ] BFSTest.test_4
[       OK ] BFSTest.test_4 (0 ms)
[ RUN      ] BFSTest.test_5
[       OK ] BFSTest.test_5 (0 ms)
[ RUN      ] BFSTest.test_6
[       OK ] BFSTest.test_6 (0 ms)
[ RUN      ] BFSTest.test_7
[       OK ] BFSTest.test_7 (0 ms)
[ RUN      ] BFSTest.test_8
[       OK ] BFSTest.test_8 (0 ms)
[ RUN      ] BFSTest.test_9
[       OK ] BFSTest.test_9 (0 ms)
[ RUN      ] BFSTest.test_10
[       OK ] BFSTest.test_10 (0 ms)
[ RUN      ] BFSTest.test_11
[       OK ] BFSTest.test_11 (0 ms)
[ RUN      ] BFSTest.test_12
[       OK ] BFSTest.test_12 (0 ms)
[ RUN      ] BFSTest.test_13
[       OK ] BFSTest.test_13 (7 ms)
[----------] 13 tests from BFSTest (8 ms total)

[----------] 5 tests from BellmanFordTest
[ RUN      ] BellmanFordTest.test_1
[       OK ] BellmanFordTest.test_1 (0 ms)
[ RUN      ] BellmanFordTest.test_2
[       OK ] BellmanFordTest.test_2 (0 ms)
[ RUN      ] BellmanFordTest.test_3
[       OK ] BellmanFordTest.test_3 (0 ms)
[ RUN      ] BellmanFordTest.test_4
[       OK ] BellmanFordTest.test_4 (0 ms)
[ RUN      ] BellmanFordTest.test_5
[       OK ] BellmanFordTest.test_5 (0 ms)
[----------] 5 tests from BellmanFordTest (0 ms total)

[----------] 5 tests from BestFirstSearchTest
[ RUN      ] BestFirstSearchTest.source_node_missing
[       OK ] BestFirstSearchTest.source_node_missing (0 ms)
[ RUN      ] BestFirstSearchTest.target_node_missing
[       OK ] BestFirstSearchTest.target_node_missing (0 ms)
[ RUN      ] BestFirstSearchTest.correct_example_small
[       OK ] BestFirstSearchTest.correct_example_small (0 ms)
[ RUN      ] BestFirstSearchTest.source_target_same
[       OK ] BestFirstSearchTest.source_target_same (0 ms)
[ RUN      ] BestFirstSearchTest.correct_example_big
[       OK ] BestFirstSearchTest.correct_example_big (0 ms)
[----------] 5 tests from BestFirstSearchTest (0 ms total)

[----------] 4 tests from BoruvkaTest
[ RUN      ] BoruvkaTest.test_1
[       OK ] BoruvkaTest.test_1 (0 ms)
[ RUN      ] BoruvkaTest.test_2
[       OK ] BoruvkaTest.test_2 (0 ms)
[ RUN      ] BoruvkaTest.test_3
[       OK ] BoruvkaTest.test_3 (0 ms)
[ RUN      ] BoruvkaTest.test_4
[       OK ] BoruvkaTest.test_4 (0 ms)
[----------] 4 tests from BoruvkaTest (0 ms total)

[----------] 4 tests from BoruvkaDeterministicTest
[ RUN      ] BoruvkaDeterministicTest.test_1
[       OK ] BoruvkaDeterministicTest.test_1 (0 ms)
[ RUN      ] BoruvkaDeterministicTest.test_2
[       OK ] BoruvkaDeterministicTest.test_2 (0 ms)
[ RUN      ] BoruvkaDeterministicTest.test_3
[       OK ] BoruvkaDeterministicTest.test_3 (0 ms)
[ RUN      ] BoruvkaDeterministicTest.test_4
[       OK ] BoruvkaDeterministicTest.test_4 (0 ms)
[----------] 4 tests from BoruvkaDeterministicTest (0 ms total)

[----------] 7 tests from ConnectivityTest
[ RUN      ] ConnectivityTest.test_1
[       OK ] ConnectivityTest.test_1 (0 ms)
[ RUN      ] ConnectivityTest.test_2
[       OK ] ConnectivityTest.test_2 (0 ms)
[ RUN      ] ConnectivityTest.test_3
[       OK ] ConnectivityTest.test_3 (0 ms)
[ RUN      ] ConnectivityTest.test_4
[       OK ] ConnectivityTest.test_4 (0 ms)
[ RUN      ] ConnectivityTest.test_6
[       OK ] ConnectivityTest.test_6 (0 ms)
[ RUN      ] ConnectivityTest.test_7
[       OK ] ConnectivityTest.test_7 (0 ms)
[ RUN      ] ConnectivityTest.test_8
[       OK ] ConnectivityTest.test_8 (0 ms)
[----------] 7 tests from ConnectivityTest (0 ms total)

[----------] 8 tests from CycleCheckTest
[ RUN      ] CycleCheckTest.test_1
[       OK ] CycleCheckTest.test_1 (0 ms)
[ RUN      ] CycleCheckTest.test_2
[       OK ] CycleCheckTest.test_2 (0 ms)
[ RUN      ] CycleCheckTest.test_3
[       OK ] CycleCheckTest.test_3 (0 ms)
[ RUN      ] CycleCheckTest.test_4
[       OK ] CycleCheckTest.test_4 (0 ms)
[ RUN      ] CycleCheckTest.test_5
[       OK ] CycleCheckTest.test_5 (0 ms)
[ RUN      ] CycleCheckTest.test_6
[       OK ] CycleCheckTest.test_6 (0 ms)
[ RUN      ] CycleCheckTest.test_7
[       OK ] CycleCheckTest.test_7 (0 ms)
[ RUN      ] CycleCheckTest.test_8
[       OK ] CycleCheckTest.test_8 (0 ms)
[----------] 8 tests from CycleCheckTest (0 ms total)

[----------] 9 tests from DFSTest
[ RUN      ] DFSTest.test_1
[       OK ] DFSTest.test_1 (0 ms)
[ RUN      ] DFSTest.test_2
[       OK ] DFSTest.test_2 (0 ms)
[ RUN      ] DFSTest.test_3
[       OK ] DFSTest.test_3 (0 ms)
[ RUN      ] DFSTest.test_4
[       OK ] DFSTest.test_4 (0 ms)
[ RUN      ] DFSTest.test_5
[       OK ] DFSTest.test_5 (0 ms)
[ RUN      ] DFSTest.test_6
[       OK ] DFSTest.test_6 (0 ms)
[ RUN      ] DFSTest.test_7
[       OK ] DFSTest.test_7 (0 ms)
[ RUN      ] DFSTest.test_8
[       OK ] DFSTest.test_8 (0 ms)
[ RUN      ] DFSTest.test_9
[       OK ] DFSTest.test_9 (0 ms)
[----------] 9 tests from DFSTest (0 ms total)

[----------] 6 tests from DOTTest
[ RUN      ] DOTTest.WriteToDotDirectedWeighted
[       OK ] DOTTest.WriteToDotDirectedWeighted (0 ms)
[ RUN      ] DOTTest.WriteToDotUndirected
[       OK ] DOTTest.WriteToDotUndirected (0 ms)
[ RUN      ] DOTTest.WriteToDotMixed
[       OK ] DOTTest.WriteToDotMixed (0 ms)
[ RUN      ] DOTTest.ReadFromDotUndirected
[       OK ] DOTTest.ReadFromDotUndirected (1 ms)
[ RUN      ] DOTTest.ReadFromDotUndirectedWeighted
[       OK ] DOTTest.ReadFromDotUndirectedWeighted (1 ms)
[ RUN      ] DOTTest.ReadFromDotDirected
[       OK ] DOTTest.ReadFromDotDirected (1 ms)
[----------] 6 tests from DOTTest (4 ms total)

[----------] 5 tests from DialTest
[ RUN      ] DialTest.test_1
[       OK ] DialTest.test_1 (0 ms)
[ RUN      ] DialTest.test_2
[       OK ] DialTest.test_2 (0 ms)
[ RUN      ] DialTest.test_3
[       OK ] DialTest.test_3 (0 ms)
[ RUN      ] DialTest.test_4
[       OK ] DialTest.test_4 (0 ms)
[ RUN      ] DialTest.test_5
[       OK ] DialTest.test_5 (0 ms)
[----------] 5 tests from DialTest (0 ms total)

[----------] 10 tests from DijkstraTest
[ RUN      ] DijkstraTest.correct_example_1
[       OK ] DijkstraTest.correct_example_1 (0 ms)
[ RUN      ] DijkstraTest.correct_example_2
[       OK ] DijkstraTest.correct_example_2 (0 ms)
[ RUN      ] DijkstraTest.correct_example_3
[       OK ] DijkstraTest.correct_example_3 (0 ms)
[ RUN      ] DijkstraTest.correct_example_4
[       OK ] DijkstraTest.correct_example_4 (0 ms)
[ RUN      ] DijkstraTest.correct_example_5
[       OK ] DijkstraTest.correct_example_5 (0 ms)
[ RUN      ] DijkstraTest.non_weigthed_node_test
[       OK ] DijkstraTest.non_weigthed_node_test (0 ms)
[ RUN      ] DijkstraTest.negative_weigthed_node_test
[       OK ] DijkstraTest.negative_weigthed_node_test (0 ms)
[ RUN      ] DijkstraTest.unreachable_node_test
[       OK ] DijkstraTest.unreachable_node_test (0 ms)
[ RUN      ] DijkstraTest.source_not_connected_test
[       OK ] DijkstraTest.source_not_connected_test (0 ms)
[ RUN      ] DijkstraTest.target_not_connected_test
[       OK ] DijkstraTest.target_not_connected_test (0 ms)
[----------] 10 tests from DijkstraTest (0 ms total)

[----------] 10 tests from DijkstraDeterministicTest
[ RUN      ] DijkstraDeterministicTest.correct_example_1
[       OK ] DijkstraDeterministicTest.correct_example_1 (0 ms)
[ RUN      ] DijkstraDeterministicTest.correct_example_2
[       OK ] DijkstraDeterministicTest.correct_example_2 (0 ms)
[ RUN      ] DijkstraDeterministicTest.correct_example_3
[       OK ] DijkstraDeterministicTest.correct_example_3 (0 ms)
[ RUN      ] DijkstraDeterministicTest.correct_example_4
[       OK ] DijkstraDeterministicTest.correct_example_4 (0 ms)
[ RUN      ] DijkstraDeterministicTest.correct_example_5
[       OK ] DijkstraDeterministicTest.correct_example_5 (0 ms)
[ RUN      ] DijkstraDeterministicTest.non_weigthed_node_test
[       OK ] DijkstraDeterministicTest.non_weigthed_node_test (0 ms)
[ RUN      ] DijkstraDeterministicTest.negative_weigthed_node_test
[       OK ] DijkstraDeterministicTest.negative_weigthed_node_test (0 ms)
[ RUN      ] DijkstraDeterministicTest.unreachable_node_test
[       OK ] DijkstraDeterministicTest.unreachable_node_test (0 ms)
[ RUN      ] DijkstraDeterministicTest.source_not_connected_test
[       OK ] DijkstraDeterministicTest.source_not_connected_test (0 ms)
[ RUN      ] DijkstraDeterministicTest.target_not_connected_test
[       OK ] DijkstraDeterministicTest.target_not_connected_test (0 ms)
[----------] 10 tests from DijkstraDeterministicTest (0 ms total)

[----------] 10 tests from DijkstraDeterministic2Test
[ RUN      ] DijkstraDeterministic2Test.correct_example_1
[       OK ] DijkstraDeterministic2Test.correct_example_1 (0 ms)
[ RUN      ] DijkstraDeterministic2Test.correct_example_2
[       OK ] DijkstraDeterministic2Test.correct_example_2 (0 ms)
[ RUN      ] DijkstraDeterministic2Test.correct_example_3
[       OK ] DijkstraDeterministic2Test.correct_example_3 (0 ms)
[ RUN      ] DijkstraDeterministic2Test.correct_example_4
[       OK ] DijkstraDeterministic2Test.correct_example_4 (0 ms)
[ RUN      ] DijkstraDeterministic2Test.correct_example_5
[       OK ] DijkstraDeterministic2Test.correct_example_5 (0 ms)
[ RUN      ] DijkstraDeterministic2Test.non_weigthed_node_test
[       OK ] DijkstraDeterministic2Test.non_weigthed_node_test (0 ms)
[ RUN      ] DijkstraDeterministic2Test.negative_weigthed_node_test
[       OK ] DijkstraDeterministic2Test.negative_weigthed_node_test (0 ms)
[ RUN      ] DijkstraDeterministic2Test.unreachable_node_test
[       OK ] DijkstraDeterministic2Test.unreachable_node_test (0 ms)
[ RUN      ] DijkstraDeterministic2Test.source_not_connected_test
[       OK ] DijkstraDeterministic2Test.source_not_connected_test (0 ms)
[ RUN      ] DijkstraDeterministic2Test.target_not_connected_test
[       OK ] DijkstraDeterministic2Test.target_not_connected_test (0 ms)
[----------] 10 tests from DijkstraDeterministic2Test (0 ms total)

[----------] 10 tests from DirectedEdgeTest
[ RUN      ] DirectedEdgeTest.Constructor_1
[       OK ] DirectedEdgeTest.Constructor_1 (0 ms)
[ RUN      ] DirectedEdgeTest.Constructor_2
[       OK ] DirectedEdgeTest.Constructor_2 (0 ms)
[ RUN      ] DirectedEdgeTest.Constructor_3
[       OK ] DirectedEdgeTest.Constructor_3 (0 ms)
[ RUN      ] DirectedEdgeTest.Constructor_4
[       OK ] DirectedEdgeTest.Constructor_4 (0 ms)
[ RUN      ] DirectedEdgeTest.Constructor_5
[       OK ] DirectedEdgeTest.Constructor_5 (0 ms)
[ RUN      ] DirectedEdgeTest.Bool_data
[       OK ] DirectedEdgeTest.Bool_data (0 ms)
[ RUN      ] DirectedEdgeTest.String_data
[       OK ] DirectedEdgeTest.String_data (0 ms)
[ RUN      ] DirectedEdgeTest.Cast_1
[       OK ] DirectedEdgeTest.Cast_1 (0 ms)
[ RUN      ] DirectedEdgeTest.Cast_2
[       OK ] DirectedEdgeTest.Cast_2 (0 ms)
[ RUN      ] DirectedEdgeTest.print_1
Test Print DirectedEdge
((Node: 11413460447292444913)) +----- |Edge: #1|-----> ((Node: 17472595041006102391))
[       OK ] DirectedEdgeTest.print_1 (0 ms)
[----------] 10 tests from DirectedEdgeTest (0 ms total)

[----------] 14 tests from DirectedWeightedEdgeTest
[ RUN      ] DirectedWeightedEdgeTest.Constructor_1
[       OK ] DirectedWeightedEdgeTest.Constructor_1 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Constructor_2
[       OK ] DirectedWeightedEdgeTest.Constructor_2 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Constructor_3
[       OK ] DirectedWeightedEdgeTest.Constructor_3 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Constructor_4
[       OK ] DirectedWeightedEdgeTest.Constructor_4 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Constructor_5
[       OK ] DirectedWeightedEdgeTest.Constructor_5 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Constructor_6
[       OK ] DirectedWeightedEdgeTest.Constructor_6 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Constructor_7
[       OK ] DirectedWeightedEdgeTest.Constructor_7 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Bool_data
[       OK ] DirectedWeightedEdgeTest.Bool_data (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.String_data
[       OK ] DirectedWeightedEdgeTest.String_data (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Cast_1
[       OK ] DirectedWeightedEdgeTest.Cast_1 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Cast_2
[       OK ] DirectedWeightedEdgeTest.Cast_2 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Cast_3
[       OK ] DirectedWeightedEdgeTest.Cast_3 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.Cast_4
[       OK ] DirectedWeightedEdgeTest.Cast_4 (0 ms)
[ RUN      ] DirectedWeightedEdgeTest.print_1
Test Print DirectedWeightedEdge
((Node: 11413460447292444913)) +----- |Edge: #1 W:10|-----> ((Node: 17472595041006102391))
[       OK ] DirectedWeightedEdgeTest.print_1 (0 ms)
[----------] 14 tests from DirectedWeightedEdgeTest (0 ms total)

[----------] 6 tests from EdgeTest
[ RUN      ] EdgeTest.Constructor_1
[       OK ] EdgeTest.Constructor_1 (0 ms)
[ RUN      ] EdgeTest.Constructor_2
[       OK ] EdgeTest.Constructor_2 (0 ms)
[ RUN      ] EdgeTest.print_1
Test Print Edge
((Node: 11413460447292444913)) ?----- |Edge: 1|-----? ((Node: 17472595041006102391))
[       OK ] EdgeTest.print_1 (0 ms)
[ RUN      ] EdgeTest.Bool_data
[       OK ] EdgeTest.Bool_data (0 ms)
[ RUN      ] EdgeTest.String_data
[       OK ] EdgeTest.String_data (0 ms)
[ RUN      ] EdgeTest.test
Adjacency Matrix:
|--|-----|
|N11413460447292444913|N17472595041006102391,E1|
|--|-----|

[       OK ] EdgeTest.test (0 ms)
[----------] 6 tests from EdgeTest (0 ms total)

[----------] 4 tests from EulerPathTest
[ RUN      ] EulerPathTest.test_1
[       OK ] EulerPathTest.test_1 (0 ms)
[ RUN      ] EulerPathTest.test_2
[       OK ] EulerPathTest.test_2 (0 ms)
[ RUN      ] EulerPathTest.test_3
[       OK ] EulerPathTest.test_3 (0 ms)
[ RUN      ] EulerPathTest.test_4
[       OK ] EulerPathTest.test_4 (0 ms)
[----------] 4 tests from EulerPathTest (0 ms total)

[----------] 4 tests from FWTest
[ RUN      ] FWTest.test_1
[       OK ] FWTest.test_1 (0 ms)
[ RUN      ] FWTest.test_2
[       OK ] FWTest.test_2 (0 ms)
[ RUN      ] FWTest.test_3
[       OK ] FWTest.test_3 (0 ms)
[ RUN      ] FWTest.test_4
[       OK ] FWTest.test_4 (0 ms)
[----------] 4 tests from FWTest (0 ms total)

[----------] 2 tests from FloydWarshallTest
[ RUN      ] FloydWarshallTest.test_1
[       OK ] FloydWarshallTest.test_1 (0 ms)
[ RUN      ] FloydWarshallTest.test_2
[       OK ] FloydWarshallTest.test_2 (0 ms)
[----------] 2 tests from FloydWarshallTest (0 ms total)

[----------] 4 tests from FordFulkersonTest
[ RUN      ] FordFulkersonTest.test_1
[       OK ] FordFulkersonTest.test_1 (0 ms)
[ RUN      ] FordFulkersonTest.test_2
[       OK ] FordFulkersonTest.test_2 (0 ms)
[ RUN      ] FordFulkersonTest.test_3
[       OK ] FordFulkersonTest.test_3 (0 ms)
[ RUN      ] FordFulkersonTest.test_4
[       OK ] FordFulkersonTest.test_4 (0 ms)
[----------] 4 tests from FordFulkersonTest (0 ms total)

[----------] 5 tests from GraphSlicingTest
[ RUN      ] GraphSlicingTest.test_1
[       OK ] GraphSlicingTest.test_1 (0 ms)
[ RUN      ] GraphSlicingTest.test_2
[       OK ] GraphSlicingTest.test_2 (0 ms)
[ RUN      ] GraphSlicingTest.test_3
[       OK ] GraphSlicingTest.test_3 (0 ms)
[ RUN      ] GraphSlicingTest.test_4
[       OK ] GraphSlicingTest.test_4 (0 ms)
[ RUN      ] GraphSlicingTest.test_5
[       OK ] GraphSlicingTest.test_5 (0 ms)
[----------] 5 tests from GraphSlicingTest (0 ms total)

[----------] 35 tests from GraphTest
[ RUN      ] GraphTest.Constructor_1
[       OK ] GraphTest.Constructor_1 (0 ms)
[ RUN      ] GraphTest.GetEdge_1
[       OK ] GraphTest.GetEdge_1 (0 ms)
[ RUN      ] GraphTest.GetEdge_2
[       OK ] GraphTest.GetEdge_2 (0 ms)
[ RUN      ] GraphTest.GetEdge_3
[       OK ] GraphTest.GetEdge_3 (0 ms)
[ RUN      ] GraphTest.GetNodeSet_1
[       OK ] GraphTest.GetNodeSet_1 (0 ms)
[ RUN      ] GraphTest.GetNodeSet_2
[       OK ] GraphTest.GetNodeSet_2 (0 ms)
[ RUN      ] GraphTest.FindEdge_Test
[       OK ] GraphTest.FindEdge_Test (0 ms)
[ RUN      ] GraphTest.RawAddEdge_1
[       OK ] GraphTest.RawAddEdge_1 (0 ms)
[ RUN      ] GraphTest.RawAddEdge_2
[       OK ] GraphTest.RawAddEdge_2 (0 ms)
[ RUN      ] GraphTest.RawAddEdge_3
[       OK ] GraphTest.RawAddEdge_3 (0 ms)
[ RUN      ] GraphTest.AddEdgeWeight_raw
[       OK ] GraphTest.AddEdgeWeight_raw (0 ms)
[ RUN      ] GraphTest.AddEdgeWeight_shared
[       OK ] GraphTest.AddEdgeWeight_shared (0 ms)
[ RUN      ] GraphTest.AddEdges_1
[       OK ] GraphTest.AddEdges_1 (0 ms)
[ RUN      ] GraphTest.AddEdges_1_shared
[       OK ] GraphTest.AddEdges_1_shared (0 ms)
[ RUN      ] GraphTest.AddEdges_2
[       OK ] GraphTest.AddEdges_2 (0 ms)
[ RUN      ] GraphTest.AddEdges_2_shared
[       OK ] GraphTest.AddEdges_2_shared (0 ms)
[ RUN      ] GraphTest.AddEdges_3
[       OK ] GraphTest.AddEdges_3 (0 ms)
[ RUN      ] GraphTest.AddEdges_3_shared
[       OK ] GraphTest.AddEdges_3_shared (0 ms)
[ RUN      ] GraphTest.AddEdges_4
[       OK ] GraphTest.AddEdges_4 (0 ms)
[ RUN      ] GraphTest.AddEdges_4_shared
[       OK ] GraphTest.AddEdges_4_shared (0 ms)
[ RUN      ] GraphTest.DirectedEdgeCycle_1
[       OK ] GraphTest.DirectedEdgeCycle_1 (0 ms)
[ RUN      ] GraphTest.DirectedEdgeCycle_2
[       OK ] GraphTest.DirectedEdgeCycle_2 (0 ms)
[ RUN      ] GraphTest.DirectedEdge_hashequality
Added node1 (0) --> node2 (1) (hash: 6797385781338664985)
Added node2 (1) --> node3 (2) (hash: 17791977803898504520)
Added node5 (4) --> node4 (3) (hash: 5199862989756027434)
Added node5 (4) --> node3 (2) (hash: 11506171036836684564)
Added node5 (4) --> node2 (1) (hash: 7586291666001634908)
Added node5 (4) --> node6 (5) (hash: 722940065044553820)
Added node5 (4) --> node1 (0) (hash: 3968452239230752325)
Added node5 (4) --> node7 (6) (hash: 6962017672493441911)
Added node3 (2) --> node4 (3) (hash: 15530591085155987774)
Added node6 (5) --> node2 (1) (hash: 7156090319466415616)
Added node7 (6) --> node2 (1) (hash: 709847165131687211)
[       OK ] GraphTest.DirectedEdge_hashequality (0 ms)
[ RUN      ] GraphTest.adj_print_1
Test Print Adjacency Matrix
Adjacency Matrix:
ERROR in Print

[       OK ] GraphTest.adj_print_1 (0 ms)
[ RUN      ] GraphTest.adj_print_2
Test Print Adjacency Matrix
Adjacency Matrix:
|--|-----|
|N11413460447292444913|N17472595041006102391,E1|
|--|-----|

[       OK ] GraphTest.adj_print_2 (0 ms)
[ RUN      ] GraphTest.adj_print_3
Test Print Adjacency Matrix
Adjacency Matrix:
|--|-----|
|N17472595041006102391|N11413460447292444913,E1|
|--|-----|
|N11413460447292444913|N17472595041006102391,E1|
|--|-----|

[       OK ] GraphTest.adj_print_3 (0 ms)
[ RUN      ] GraphTest.adj_print_4
Test Print Adjacency Matrix
Adjacency Matrix:
|--|-----|-----|
|N11275350073939794026|N17472595041006102391,E2|N11413460447292444913,E3|
|--|-----|-----|
|N17472595041006102391|N11413460447292444913,E1|N11275350073939794026,E2|
|--|-----|-----|
|N11413460447292444913|N17472595041006102391,E1|N11275350073939794026,E3|
|--|-----|-----|

[       OK ] GraphTest.adj_print_4 (0 ms)
[ RUN      ] GraphTest.adj_print_5
Test Print Adjacency Matrix
Adjacency Matrix:
|--|-----|-----|
|N17472595041006102391|N11275350073939794026,E2|
|--|-----|-----|
|N11413460447292444913|N17472595041006102391,E1|N11275350073939794026,E3|
|--|-----|-----|

[       OK ] GraphTest.adj_print_5 (0 ms)
[ RUN      ] GraphTest.adj_print_6
Test Print Adjacency Matrix
Adjacency Matrix:
|--|-----|-----|
|N11275350073939794026|N11413460447292444913,E3|
|--|-----|-----|
|N17472595041006102391|N11275350073939794026,E2|
|--|-----|-----|
|N11413460447292444913|N17472595041006102391,E1|N11275350073939794026,E3|
|--|-----|-----|

[       OK ] GraphTest.adj_print_6 (0 ms)
[ RUN      ] GraphTest.set_data
[       OK ] GraphTest.set_data (0 ms)
[ RUN      ] GraphTest.test_outNodes
[       OK ] GraphTest.test_outNodes (0 ms)
[ RUN      ] GraphTest.test_outNodes_shared
[       OK ] GraphTest.test_outNodes_shared (0 ms)
[ RUN      ] GraphTest.test_inOutNodes
[       OK ] GraphTest.test_inOutNodes (0 ms)
[ RUN      ] GraphTest.test_inOutNodes_shared
[       OK ] GraphTest.test_inOutNodes_shared (0 ms)
[ RUN      ] GraphTest.set_data_isolated
[       OK ] GraphTest.set_data_isolated (0 ms)
[----------] 35 tests from GraphTest (0 ms total)

[----------] 4 tests from InOutNodesTest
[ RUN      ] InOutNodesTest.test_outEdges
[       OK ] InOutNodesTest.test_outEdges (0 ms)
[ RUN      ] InOutNodesTest.test_outEdges_shared
[       OK ] InOutNodesTest.test_outEdges_shared (0 ms)
[ RUN      ] InOutNodesTest.test_inOutEdges
[       OK ] InOutNodesTest.test_inOutEdges (0 ms)
[ RUN      ] InOutNodesTest.test_inOutEdges_shared
[       OK ] InOutNodesTest.test_inOutEdges_shared (0 ms)
[----------] 4 tests from InOutNodesTest (0 ms total)

[----------] 2 tests from ReverseDirectedGraphTest
[ RUN      ] ReverseDirectedGraphTest.test_function
[       OK ] ReverseDirectedGraphTest.test_function (0 ms)
[ RUN      ] ReverseDirectedGraphTest.test_exception
[       OK ] ReverseDirectedGraphTest.test_exception (0 ms)
[----------] 2 tests from ReverseDirectedGraphTest (0 ms total)

[----------] 4 tests from IsolatedNodeGraphTest
[ RUN      ] IsolatedNodeGraphTest.Test_AddNode1
[       OK ] IsolatedNodeGraphTest.Test_AddNode1 (0 ms)
[ RUN      ] IsolatedNodeGraphTest.Test_AddNode2
[       OK ] IsolatedNodeGraphTest.Test_AddNode2 (0 ms)
[ RUN      ] IsolatedNodeGraphTest.Test_AddNodes1
[       OK ] IsolatedNodeGraphTest.Test_AddNodes1 (0 ms)
[ RUN      ] IsolatedNodeGraphTest.Test_AddNodes2
[       OK ] IsolatedNodeGraphTest.Test_AddNodes2 (0 ms)
[----------] 4 tests from IsolatedNodeGraphTest (0 ms total)

[----------] 2 tests from TestRemoveNode
[ RUN      ] TestRemoveNode.Test_isolatedNode
[       OK ] TestRemoveNode.Test_isolatedNode (0 ms)
[ RUN      ] TestRemoveNode.Test_connectedNode
[       OK ] TestRemoveNode.Test_connectedNode (0 ms)
[----------] 2 tests from TestRemoveNode (0 ms total)

[----------] 1 test from TestGetNode
[ RUN      ] TestGetNode.Test_1
[       OK ] TestGetNode.Test_1 (0 ms)
[----------] 1 test from TestGetNode (0 ms total)

[----------] 4 tests from KahnTest
[ RUN      ] KahnTest.error_cyclic_graph
[       OK ] KahnTest.error_cyclic_graph (0 ms)
[ RUN      ] KahnTest.error_undirected_graph
[       OK ] KahnTest.error_undirected_graph (0 ms)
[ RUN      ] KahnTest.correct_example_small
[       OK ] KahnTest.correct_example_small (0 ms)
[ RUN      ] KahnTest.correct_example_big
[       OK ] KahnTest.correct_example_big (0 ms)
[----------] 4 tests from KahnTest (0 ms total)

[----------] 5 tests from KosarajuTest
[ RUN      ] KosarajuTest.test_1
[       OK ] KosarajuTest.test_1 (0 ms)
[ RUN      ] KosarajuTest.test_2
[       OK ] KosarajuTest.test_2 (0 ms)
[ RUN      ] KosarajuTest.test_3
[       OK ] KosarajuTest.test_3 (0 ms)
[ RUN      ] KosarajuTest.test_4
[       OK ] KosarajuTest.test_4 (0 ms)
[ RUN      ] KosarajuTest.test_5
[       OK ] KosarajuTest.test_5 (0 ms)
[----------] 5 tests from KosarajuTest (0 ms total)

[----------] 4 tests from KruskalTest
[ RUN      ] KruskalTest.test_1
[       OK ] KruskalTest.test_1 (0 ms)
[ RUN      ] KruskalTest.test_2
[       OK ] KruskalTest.test_2 (0 ms)
[ RUN      ] KruskalTest.test_3
[       OK ] KruskalTest.test_3 (0 ms)
[ RUN      ] KruskalTest.test_4
[       OK ] KruskalTest.test_4 (0 ms)
[----------] 4 tests from KruskalTest (0 ms total)

[----------] 5 tests from MTXTest
[ RUN      ] MTXTest.WriteToMtxDirectedWeighted
[       OK ] MTXTest.WriteToMtxDirectedWeighted (0 ms)
[ RUN      ] MTXTest.WriteToMtxUndirected
[       OK ] MTXTest.WriteToMtxUndirected (0 ms)
[ RUN      ] MTXTest.WriteToMtxMixed
[       OK ] MTXTest.WriteToMtxMixed (0 ms)
[ RUN      ] MTXTest.ReadFromMtxDirectedWeighted
[       OK ] MTXTest.ReadFromMtxDirectedWeighted (0 ms)
[ RUN      ] MTXTest.ReadFromMtxUndirectedWeighted
[       OK ] MTXTest.ReadFromMtxUndirectedWeighted (0 ms)
[----------] 5 tests from MTXTest (0 ms total)

[----------] 4 tests from StringNodeTest
[ RUN      ] StringNodeTest.StringConstructor
[       OK ] StringNodeTest.StringConstructor (0 ms)
[ RUN      ] StringNodeTest.StringeqOperator
[       OK ] StringNodeTest.StringeqOperator (0 ms)
[ RUN      ] StringNodeTest.StringltOperator
[       OK ] StringNodeTest.StringltOperator (0 ms)
[ RUN      ] StringNodeTest.StringprintOperator
[       OK ] StringNodeTest.StringprintOperator (0 ms)
[----------] 4 tests from StringNodeTest (0 ms total)

[----------] 9 tests from PartitionTest
[ RUN      ] PartitionTest.test_1
[       OK ] PartitionTest.test_1 (0 ms)
[ RUN      ] PartitionTest.test_2
[       OK ] PartitionTest.test_2 (82 ms)
[ RUN      ] PartitionTest.test_3
[       OK ] PartitionTest.test_3 (0 ms)
[ RUN      ] PartitionTest.test_4
[       OK ] PartitionTest.test_4 (73 ms)
[ RUN      ] PartitionTest.test_5
[       OK ] PartitionTest.test_5 (0 ms)
[ RUN      ] PartitionTest.test_6
[       OK ] PartitionTest.test_6 (68 ms)
[ RUN      ] PartitionTest.test_7
[       OK ] PartitionTest.test_7 (0 ms)
[ RUN      ] PartitionTest.test_8
[       OK ] PartitionTest.test_8 (82 ms)
[ RUN      ] PartitionTest.test_9
[       OK ] PartitionTest.test_9 (77 ms)
[----------] 9 tests from PartitionTest (386 ms total)

[----------] 4 tests from PrimTest
[ RUN      ] PrimTest.test_1
[       OK ] PrimTest.test_1 (0 ms)
[ RUN      ] PrimTest.test_2
[       OK ] PrimTest.test_2 (0 ms)
[ RUN      ] PrimTest.test_3
[       OK ] PrimTest.test_3 (0 ms)
[ RUN      ] PrimTest.test_4
[       OK ] PrimTest.test_4 (0 ms)
[----------] 4 tests from PrimTest (0 ms total)

[----------] 29 tests from RWOutputTest
[ RUN      ] RWOutputTest.test_1
[       OK ] RWOutputTest.test_1 (0 ms)
[ RUN      ] RWOutputTest.test_2
[       OK ] RWOutputTest.test_2 (0 ms)
[ RUN      ] RWOutputTest.test_3
[       OK ] RWOutputTest.test_3 (0 ms)
[ RUN      ] RWOutputTest.test_4
[       OK ] RWOutputTest.test_4 (0 ms)
[ RUN      ] RWOutputTest.test_5
[       OK ] RWOutputTest.test_5 (0 ms)
[ RUN      ] RWOutputTest.test_6
[       OK ] RWOutputTest.test_6 (0 ms)
[ RUN      ] RWOutputTest.test_7
[       OK ] RWOutputTest.test_7 (0 ms)
[ RUN      ] RWOutputTest.test_8
[       OK ] RWOutputTest.test_8 (0 ms)
[ RUN      ] RWOutputTest.test_9
[       OK ] RWOutputTest.test_9 (0 ms)
[ RUN      ] RWOutputTest.test_10
[       OK ] RWOutputTest.test_10 (0 ms)
[ RUN      ] RWOutputTest.test_11
[       OK ] RWOutputTest.test_11 (0 ms)
[ RUN      ] RWOutputTest.test_12
[       OK ] RWOutputTest.test_12 (0 ms)
[ RUN      ] RWOutputTest.test_13
[       OK ] RWOutputTest.test_13 (0 ms)
[ RUN      ] RWOutputTest.test_14
[       OK ] RWOutputTest.test_14 (0 ms)
[ RUN      ] RWOutputTest.test_15
[       OK ] RWOutputTest.test_15 (0 ms)
[ RUN      ] RWOutputTest.test_16
[       OK ] RWOutputTest.test_16 (0 ms)
[ RUN      ] RWOutputTest.test_17
[       OK ] RWOutputTest.test_17 (0 ms)
[ RUN      ] RWOutputTest.test_18
[       OK ] RWOutputTest.test_18 (0 ms)
[ RUN      ] RWOutputTest.test_19
[       OK ] RWOutputTest.test_19 (0 ms)
[ RUN      ] RWOutputTest.test_20
[       OK ] RWOutputTest.test_20 (0 ms)
[ RUN      ] RWOutputTest.test_21
[       OK ] RWOutputTest.test_21 (0 ms)
[ RUN      ] RWOutputTest.test_22
[       OK ] RWOutputTest.test_22 (0 ms)
[ RUN      ] RWOutputTest.test_23
[       OK ] RWOutputTest.test_23 (0 ms)
[ RUN      ] RWOutputTest.test_24
[       OK ] RWOutputTest.test_24 (0 ms)
[ RUN      ] RWOutputTest.test_25
[       OK ] RWOutputTest.test_25 (0 ms)
[ RUN      ] RWOutputTest.test_26
[       OK ] RWOutputTest.test_26 (0 ms)
[ RUN      ] RWOutputTest.test_27
[       OK ] RWOutputTest.test_27 (39 ms)
[ RUN      ] RWOutputTest.test_28
[       OK ] RWOutputTest.test_28 (0 ms)
[ RUN      ] RWOutputTest.test_29
[       OK ] RWOutputTest.test_29 (0 ms)
[----------] 29 tests from RWOutputTest (47 ms total)

[----------] 7 tests from TarjanTest
[ RUN      ] TarjanTest.test_1
fish: Process 51364, './test_exe' from job 1, './test_exe | tee test_output' terminated by signal SIGSEGV (Address boundary error)

badumbatish avatar May 10 '24 09:05 badumbatish

Can you debug this issue? maybe the Clang compiler can give a differente binary that create the problem. Maybe we need also to add a macos compilation and test on CI/CD

ZigRazor avatar May 10 '24 10:05 ZigRazor

i'll give it a try, currently failing with

Process 84829 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
    frame #0: 0x0000000100021e58 test_exe`std::__1::shared_ptr<CXXGraph::Node<int> const>::operator->[abi:ue170006]() const + 12
test_exe`std::__1::shared_ptr<CXXGraph::Node<int> const>::operator->[abi:ue170006]:
->  0x100021e58 <+12>: ldr    x0, [x8]
    0x100021e5c <+16>: add    sp, sp, #0x10
    0x100021e60 <+20>: ret    

test_exe`CXXGraph::Node<int>::getId:
    0x100021e64 <+0>:  sub    sp, sp, #0x10
Target 0: (test_exe) stopped.

badumbatish avatar May 11 '24 20:05 badumbatish

My debugging leads to TarjanTest.cpp:25 -> Tarjan_impl.hpp:145 -> PointerHash.hpp:71.

@ZigRazor not too sure how equality overloading works with shared ptr but shouln't we check for nullptr before we access them ? Screenshot 2024-05-11 at 1 52 13 PM

I asked this since we're doing comparison with shared_ptr edge in Tarjan_impl.hpp:145

Screenshot 2024-05-11 at 1 55 05 PM

lldb stack trace

(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
  * frame #0: 0x0000000100021e20 test_exe`std::__1::shared_ptr<CXXGraph::Node<int> const>::operator->[abi:ue170006](this=0x0000000000000010) const at shared_ptr.h:885:16
    frame #1: 0x0000000100021ec0 test_exe`bool CXXGraph::operator==<int>(p1=std::__1::shared_ptr<const CXXGraph::Edge<int> >::element_type @ 0x0000000138609b18 strong=5 weak=1, p2=nullptr) at PointerHash.hpp:71:14
    frame #2: 0x0000000100065f58 test_exe`bool std::__1::operator!=[abi:ue170006]<CXXGraph::Edge<int> const, CXXGraph::Edge<int> const>(__x=std::__1::shared_ptr<const CXXGraph::Edge<int> >::element_type @ 0x0000000138609b18 strong=5 weak=1, __y=nullptr) at shared_ptr.h:1357:18
    frame #3: 0x00000001000657a0 test_exe`CXXGraph::Graph<int>::tarjan(this=0x0000000138604118, curNode=std::__1::shared_ptr<const CXXGraph::Node<int> >::element_type @ 0x0000000138408cc8 strong=7 weak=1, prevEdge=nullptr) const::'lambda'(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)::operator()(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>) const at Tarjan_impl.hpp:145:30
    frame #4: 0x0000000100065018 test_exe`decltype(std::declval<CXXGraph::Graph<int>::tarjan(unsigned int) const::'lambda'(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)&>()(std::declval<std::__1::shared_ptr<CXXGraph::Node<int> const>>(), std::declval<std::__1::shared_ptr<CXXGraph::Edge<int> const>>())) std::__1::__invoke[abi:ue170006]<CXXGraph::Graph<int>::tarjan(unsigned int) const::'lambda'(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)&, std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>>(__f=0x0000000138604118, __args=nullptr, __args=nullptr) at invoke.h:340:25
    frame #5: 0x0000000100064f98 test_exe`void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ue170006]<CXXGraph::Graph<int>::tarjan(unsigned int) const::'lambda'(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)&, std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>>(__args=0x0000000138604118, __args=nullptr, __args=nullptr) at invoke.h:415:5
    frame #6: 0x0000000100064f64 test_exe`std::__1::__function::__alloc_func<CXXGraph::Graph<int>::tarjan(unsigned int) const::'lambda'(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>), std::__1::allocator<CXXGraph::Graph<int>::tarjan(unsigned int) const::'lambda'(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)>, void (std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)>::operator()[abi:ue170006](this=0x0000000138604118, __arg=nullptr, __arg=nullptr) at function.h:193:16
    frame #7: 0x0000000100063f34 test_exe`std::__1::__function::__func<CXXGraph::Graph<int>::tarjan(unsigned int) const::'lambda'(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>), std::__1::allocator<CXXGraph::Graph<int>::tarjan(unsigned int) const::'lambda'(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)>, void (std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)>::operator()(this=0x0000000138604110, __arg=nullptr, __arg=nullptr) at function.h:364:12
    frame #8: 0x000000010007082c test_exe`std::__1::__function::__value_func<void (std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)>::operator()[abi:ue170006](this=0x000000016fdfe4a8, __args=nullptr, __args=nullptr) const at function.h:518:16
    frame #9: 0x0000000100061bdc test_exe`std::__1::function<void (std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)>::operator()(this= Lambda in File Tarjan_impl.hpp at Line 68, __arg=nullptr, __arg=nullptr) const at function.h:1169:12
    frame #10: 0x0000000100014ca4 test_exe`CXXGraph::Graph<int>::tarjan(this=0x000000016fdfe938, typeMask=1) const at Tarjan_impl.hpp:190:7
    frame #11: 0x000000010022dd3c test_exe`TarjanTest_test_1_Test::TestBody(this=0x000000012e618730) at TarjanTest.cpp:25:43
    frame #12: 0x00000001002d82f4 test_exe`void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(object=0x000000012e618730, method=0x00000000000000010000000000000020, location="the test body") at gtest.cc:2635:10
    frame #13: 0x000000010029e770 test_exe`void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(object=0x000000012e618730, method=0x00000000000000010000000000000020, location="the test body") at gtest.cc:2671:14
    frame #14: 0x000000010029e6c0 test_exe`testing::Test::Run(this=0x000000012e618730) at gtest.cc:2710:5
    frame #15: 0x000000010029f580 test_exe`testing::TestInfo::Run(this=0x000000012f451b70) at gtest.cc:2856:11
    frame #16: 0x00000001002a0654 test_exe`testing::TestSuite::Run(this=0x000000012f451c40) at gtest.cc:3034:30
    frame #17: 0x00000001002aed10 test_exe`testing::internal::UnitTestImpl::RunAllTests(this=0x000000012e605890) at gtest.cc:5964:44
    frame #18: 0x00000001002e1ef0 test_exe`bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(object=0x000000012e605890, method=(test_exe`testing::internal::UnitTestImpl::RunAllTests() at gtest.cc:5841), location="auxiliary test code (environments or event listeners)") at gtest.cc:2635:10
    frame #19: 0x00000001002ae690 test_exe`bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(object=0x000000012e605890, method=(test_exe`testing::internal::UnitTestImpl::RunAllTests() at gtest.cc:5841), location="auxiliary test code (environments or event listeners)") at gtest.cc:2671:14
    frame #20: 0x00000001002ae57c test_exe`testing::UnitTest::Run(this=0x00000001003e0de0) at gtest.cc:5543:10
    frame #21: 0x000000010026dcfc test_exe`RUN_ALL_TESTS() at gtest.h:2334:73
    frame #22: 0x000000010026dce0 test_exe`main(argc=1, argv=0x000000016fdff3e0) at main.cpp:53:10
    frame #23: 0x000000018a0220e0 dyld`start + 2360
(lldb) break set -f /Users/jjasmine/Developer/github/CXXGraph/include/CXXGraph/Graph/Algorithm/Tarjan_impl.hpp -l 145
Breakpoint 2: where = test_exe`CXXGraph::Graph<int>::tarjan(unsigned int) const::'lambda'(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>)::operator()(std::__1::shared_ptr<CXXGraph::Node<int> const>, std::__1::shared_ptr<CXXGraph::Edge<int> const>) const + 1840 at Tarjan_impl.hpp:145:13, address = 0x0000000100065790

badumbatish avatar May 11 '24 20:05 badumbatish

yes,, we need to add the check that the 2 shared_ptr are not null, before access them in the equality operator!

ZigRazor avatar May 13 '24 05:05 ZigRazor

Nice stuff i got it fixed, let me open a PR

Screenshot 2024-05-12 at 11 51 01 PM

badumbatish avatar May 13 '24 06:05 badumbatish

I'm still not sure how this illegal access of nullptr manages to pass tests with gcc, do you have any ideas? @ZigRazor

badumbatish avatar May 13 '24 06:05 badumbatish

Really, I don't know

ZigRazor avatar May 13 '24 07:05 ZigRazor

I'm still not sure how this illegal access of nullptr manages to pass tests with gcc, do you have any ideas? @ZigRazor

Could you pls show your DFS ordering of the case? Different DFS ordering may cause different performance of the code below, I guess. image

Basically this bug is caused by the shared_ptr as you mentioned. @badumbatish

In order to prevent similar hidden dangers, there shall be an inspection wherever there are pointers, at the entry point of each function in file PointerHash.hpp or other files. Do you think it's necessary or not? @ZigRazor @badumbatish

edogawashinichi avatar May 13 '24 12:05 edogawashinichi

I'm still not sure how this illegal access of nullptr manages to pass tests with gcc, do you have any ideas?

Could you pls show your DFS ordering of the case? Different DFS ordering may cause different performance of the code below, I guess

I'm not sure how different DFS ordering can explain the passing test cases of gcc versus clang. Different ordering or not, it's still true that we passed in a nullptr so that our code seg faults.

badumbatish avatar May 14 '24 05:05 badumbatish

In order to prevent similar hidden dangers, there shall be an inspection wherever there are pointers, at the entry point of each function in file PointerHash.hpp or other files. Do you think it's necessary or not?

I think so, compiler should be able to elide some nullptr checks on Release. It is however, up to the maintainers, not me

badumbatish avatar May 14 '24 05:05 badumbatish

In order to prevent similar hidden dangers, there shall be an inspection wherever there are pointers, at the entry point of each function in file PointerHash.hpp or other files. Do you think it's necessary or not?

Yes, I think that check all these occurence can be helpful to release a safer code

ZigRazor avatar May 14 '24 07:05 ZigRazor