Summary
On cuDF (rapids 25.02 + 26.02), a Cypher query with shared aliases across comma-separated MATCH patterns and a relationship-property projection in RETURN crashes the Python process (SIGSEGV / exit 139).
Repro (rapids 25.02 / 26.02 GPU container)
import pandas as pd, graphistry, cudf
graphistry.register(api=3, server="hub.graphistry.com")
nodes = pd.DataFrame({"id":["a1","b1"],"label__A":[True,False],"label__B":[False,True]})
edges = pd.DataFrame({"s":["a1","b1"],"d":["b1","a1"],"type":["R","S"],"weight":[7,9]})
g = (graphistry.nodes(cudf.from_pandas(nodes),"id")
.edges(cudf.from_pandas(edges),"s","d")
.bind(edge_label="type"))
# Both of the following segfault with EXIT=139:
# A) WITH-form (goes through flatten path from #1341):
g.gfql(
"MATCH (a:A {id: 'a1'})-[r:R]->(b:B) "
"WITH a, b, r "
"MATCH (b)-[:S]->(a) "
"RETURN r.weight AS w",
engine="cudf",
)
# B) Hand-flattened single-MATCH (does NOT go through flatten):
g.gfql(
"MATCH (a:A {id: 'a1'})-[r:R]->(b:B), (b)-[:S]->(a) "
"RETURN r.weight AS w",
engine="cudf",
)
Both crash. Pandas equivalent works correctly and returns [{'w': 7}].
Suspected cause
cuDF row-pipeline shared-alias join with relationship-property projection — likely a C-level interop issue in cudf merge / pylibcudf. Stack trace dumps come from _PyRun_SimpleFileObject with pylibcudf.* extension modules loaded.
The issue is NOT specific to the new flatten_carried_endpoint_rebind path from #1341 — it reproduces equally on the hand-flattened single-MATCH form, so the cuDF bug is in shared-alias multi-pattern join with rel-property projection regardless of how the query reaches it.
Acceptance criteria
- The repro queries above execute without crashing on cuDF (rapids 25.02 + 26.02).
- Result rows match the pandas baseline (
[{'w': 7}]).
- New parametrized test under
graphistry/tests/compute/gfql/cypher/test_lowering.py covering shared-alias multi-pattern + rel-property projection on both engines.
Surfaced by
PR #1351 (#1341) test-amplification round-001. The corresponding cuDF parity test (test_string_cypher_executes_with_match_reentry_relationship_variable_carried_on_cudf) is currently @pytest.mark.skip'd with this issue as the link.
Summary
On cuDF (rapids 25.02 + 26.02), a Cypher query with shared aliases across comma-separated MATCH patterns and a relationship-property projection in RETURN crashes the Python process (SIGSEGV / exit 139).
Repro (rapids 25.02 / 26.02 GPU container)
Both crash. Pandas equivalent works correctly and returns
[{'w': 7}].Suspected cause
cuDF row-pipeline shared-alias join with relationship-property projection — likely a C-level interop issue in cudf merge / pylibcudf. Stack trace dumps come from
_PyRun_SimpleFileObjectwithpylibcudf.*extension modules loaded.The issue is NOT specific to the new
flatten_carried_endpoint_rebindpath from #1341 — it reproduces equally on the hand-flattened single-MATCH form, so the cuDF bug is in shared-alias multi-pattern join with rel-property projection regardless of how the query reaches it.Acceptance criteria
[{'w': 7}]).graphistry/tests/compute/gfql/cypher/test_lowering.pycovering shared-alias multi-pattern + rel-property projection on both engines.Surfaced by
PR #1351 (#1341) test-amplification round-001. The corresponding cuDF parity test (
test_string_cypher_executes_with_match_reentry_relationship_variable_carried_on_cudf) is currently@pytest.mark.skip'd with this issue as the link.