clMathLibraries / clSPARSE

a software library containing Sparse functions written in OpenCL
Apache License 2.0
173 stars 61 forks source link

Segfault when reading 0-based matrix #211

Open Tongdongq opened 5 years ago

Tongdongq commented 5 years ago

When reading a 0-based matrix, my copy of clSPARSE segfaults. I traced the reason to clsparseSCsrMatrixfromFile() -> MMReadFormat() -> MMGenerateCOOFromFile() -> FillCoordData(), where each coordinate reduced by one. When removing this subtraction, the program does not segfault. The actual segfault occurs in clsparseSCsrMatrixfromFile(), during conversion of COO to CSR. One of the coordinates in the file is 0, and becomes UINT_MAX, this causes the while loop to keep writing untill the end of the iCsrrow_pointer array. Is this reader only for 1-based matrix files? I removed the subtraction and it seems fixed now, do you see any other possible bugs?