pyxis-roc / gpu-api-interposer

GPU API interposer generation tools plus libcuda (CUDA Device API) and libcudart (CUDA Runtime API) interposers. Also includes harmonv, for now.
2 stars 0 forks source link

cuGetProcAddress interposition causes segfault #2

Open bavalpey opened 3 years ago

bavalpey commented 3 years ago

Interposition of cuGetProcAddress causes a segmentation fault when running programs. This could be due to uGetProcAddress being redefined to cuGetProcAddress_ptsz. A temporary fix works by commenting out the interposition for the function in libcuda_record.c. Perhaps this should be done during generation until the bug can be fixed.

sree314 commented 3 years ago

I've been digging into this and here's what I found.

cuGetProcAddress was introduced in 11.3

The reason bellatrix libcuda.so doesn't have it is because it's an older version (460). I suspect that's why interposing libcuda crashes. I can update the driver here to get it working since capella (v465) does have cuGetProcAddress. So there's nothing fancy going on behind the scenes [the _ptsz is a red herring].

However, cuGetProcAddress returns an address of a function that the runtime can then call directly bypassing the interposer, so I don't want the runtime to use it since library interposition does not work for this.

My recommendation: Let's stick to 11.2 until we fully investigate the implications.