-
Notifications
You must be signed in to change notification settings - Fork 191
cuda.bindings: Add test_nvrtcGetLoweredName_failure
#499
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
/ok to test |
This comment has been minimized.
This comment has been minimized.
/ok to test |
All jobs with Segmentation faults are running with CUDA 12.0.1: After unpacking logs_35364236774.zip (https://github.com/NVIDIA/cuda-python/actions/runs/13725931628/)
EDIT: Observed under #502: Segmentation faults with CUDA 11.8.0 |
All 10 failing jobs segfault here (test_nvrtc.py):
+++ b/cuda_bindings/cuda/bindings/nvrtc.pyx.in
@@ -859,17 +859,25 @@ def nvrtcGetLoweredName(prog, char* name_expression):
--------
nvrtcAddNameExpression
"""
+ print("\nLOOOK nvrtcGetLoweredName ENTRY", flush=True)
cdef cynvrtc.nvrtcProgram cyprog
if prog is None:
+ print("LOOOK nvrtcGetLoweredName prog is None", flush=True)
cyprog = <cynvrtc.nvrtcProgram><void_ptr>0
elif isinstance(prog, (nvrtcProgram,)):
+ print("LOOOK nvrtcGetLoweredName isinstance(prog, (nvrtcProgram,))", flush=True)
pprog = int(prog)
+ print("LOOOK nvrtcGetLoweredName AFTER int(prog)", flush=True)
cyprog = <cynvrtc.nvrtcProgram><void_ptr>pprog
else:
+ print("LOOOK nvrtcGetLoweredName else", flush=True)
pprog = int(nvrtcProgram(prog))
+ print("LOOOK nvrtcGetLoweredName AFTER int(nvrtcProgram(prog))", flush=True)
cyprog = <cynvrtc.nvrtcProgram><void_ptr>pprog
cdef const char* lowered_name = NULL
+ print("LOOOK nvrtcGetLoweredName BEFORE cynvrtc.nvrtcGetLoweredName(cyprog, name_expression, &lowered_name)", flush=True)
err = cynvrtc.nvrtcGetLoweredName(cyprog, name_expression, &lowered_name)
+ print("LOOOK nvrtcGetLoweredName RETURN\n", flush=True)
return (nvrtcResult(err), <bytes>lowered_name if lowered_name != NULL else None) |
… both stdout and stderr)" This reverts commit b0464e7.
/ok to test |
While debugging this there are two things that stood out:
In 12.8.0 the API From offline discussion, having us skip this test on 12.0 would allow us to continue stress testing new releases. |
nvrtc.nvrtcGetLoweredName()
segfaulttest_nvrtcGetLoweredName_failure
Auto-sync is disabled for ready for review pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
|
This test was first added while working on PR #497, but moved to this separate PR, so that we could focus on the Segmentation Fault in isolation.
It turns out that only CTK 12.0 does not handle invalid
prog
arguments gracefully, newer CTKs do. The approach taken here is to simply skip the new test for CTK < 12.1. This will be useful as a stress-test for future CTK releases.See #499 (comment) for more details.