You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[BUG] conda-cpp-tests on gb300: routing PDP test hits illegal memory access, set_shmem_of_kernel fails after it #2212
Describe the bug
In nightly run 40167716943 (2026-10-25, b5ad4d07), conda-cpp-tests / 13.3.0, 3.14, arm64, ubuntu26.04, gb300, latest-driver, latest-deps fails (job 121092087617). 3 routing tests fail, in every retry:
cost_boundary_initialization.pdp_set_route_data_resets_cost_boundaries: C++ exception from cuda/__driver/driver_api.h:662, an illegal memory access was encountered
The two set_shmem_of_kernel failures look like fallout of the illegal access in the preceding PDP test: the sticky error 700 is still set when they run. Within the routing test binary, the other 57 tests pass.
All 12 other conda-cpp-tests jobs in the run passed.
The same commit passed on gb300 the next night (40277562656), so this is intermittent.
On an x86_64 B300 (sm_103, same sm_100f device code as GB300) with 26.12.00a58, cost_boundary_initialization.* and set_shmem_of_kernel.* passed 200/200, and compute-sanitizer memcheck reports no memory errors. So the GPU alone does not reproduce it.
I think the cause is in the test itself. In test_cost_boundaries_reset, only the PDP branch does
ifconstexpr (is_pdp) {
constint pickup = 0;
constint delivery = 1;
raft::copy(d_pickups.data(), &pickup, 1, stream);
raft::copy(d_deliveries.data(), &delivery, 1, stream);
...
} // pickup and delivery end here, nothing has synced the stream
raft::copy is a cudaMemcpyAsync from pageable memory. Where the driver reads that source when the stream reaches the copy instead of at the call (the same class as #1756, #2200, #2202, and NVIDIA/cudf#23517 on GB300/GH200), d_pickups/d_deliveries receive whatever is on the stack by then, set_route_data reads out of bounds, and the sticky error 700 then fails the two set_shmem_of_kernel tests that follow. That matches the gb300 runs on 10-25 and 11-01: the PDP variant fails and the VRP variant next to it passes. On the B300 a small probe shows pageable cudaMemcpyAsync reads the source at call time, which is why it does not reproduce there.
#2260 keeps the host sources alive (device_copy from function-scope vectors, the way the test already handles cost_matrix and order_locations) and fixes two src sites with the same pattern.
Activity
0z5a commentedon Nov 3, 2026
On an x86_64 B300 (sm_103, same
sm_100fdevice code as GB300) with 26.12.00a58,cost_boundary_initialization.*andset_shmem_of_kernel.*passed 200/200, and compute-sanitizer memcheck reports no memory errors. So the GPU alone does not reproduce it.I think the cause is in the test itself. In
test_cost_boundaries_reset, only the PDP branch doesraft::copyis acudaMemcpyAsyncfrom pageable memory. Where the driver reads that source when the stream reaches the copy instead of at the call (the same class as #1756, #2200, #2202, and NVIDIA/cudf#23517 on GB300/GH200),d_pickups/d_deliveriesreceive whatever is on the stack by then,set_route_datareads out of bounds, and the sticky error 700 then fails the twoset_shmem_of_kerneltests that follow. That matches the gb300 runs on 10-25 and 11-01: the PDP variant fails and the VRP variant next to it passes. On the B300 a small probe shows pageablecudaMemcpyAsyncreads the source at call time, which is why it does not reproduce there.#2260 keeps the host sources alive (
device_copyfrom function-scope vectors, the way the test already handlescost_matrixandorder_locations) and fixes two src sites with the same pattern.