HLRBRep_Algo

Occasionally, a segmentation fault occurs when executing the HLRBRep_Algo::Hide() method. Could you please tell me what might be causing this issue

Dmitrii Pasukhin's picture

Hello.

Please share the code and file to reproduce. Also please share the OCCT version which you are using.

Best regards, Dmitrii.

kk k's picture

Occasionally, this issue occurs when the call frequency is high. Could it be a memory allocation problem? The version is 7.8.0

Attachments: 
Dmitrii Pasukhin's picture

Please also share the code. The frequency means you call it in multithread?

Best regards, Dmitrii.

kk k's picture

Hello, the issue has been resolved. The array out-of-bounds exception occurred at the position marked with a red box in the attachment

gkv311 n's picture

Do you mean you have swapped conditions to check the range before accessing array value and this solved issue with random crashes, or just localized the crash place?

      Standard_Integer im1=0;
-      for(i=1; IndUV[i0][i]!=-1 && i<nbUV[i0]; i++,im1++) {
+      for(i=1; i<nbUV[i0] && IndUV[i0][i]!=-1; i++,im1++) {
kk k's picture

Check the array range before accessing array values, which is the green line in the image

kk k's picture

No multithreading is used.

TopoDS_Shape topoShape;
BRepTools::Read(topoShape, "filename", BRep_Builder());
for (int i = 0; i < 500; i++)
{
HLRAlgo_Projector algoProjector(gp_Ax2(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1)));
Handle(HLRBRep_Algo) pHLRAlgo = new HLRBRep_Algo;
pHLRAlgo->Add(topoShape);
pHLRAlgo->Projector(algoProjector);
pHLRAlgo->Update();
pHLRAlgo->Hide();
}