[Paraview] Crash when extracting surface in a big mesh

Paul Edwards paul.m.edwards at gmail.com
Thu Oct 30 06:41:48 EDT 2008


Hi.

I fixed the problem.  I updated those 4 variables as suggested by Mike
in vtkDataSetSurfaceFilter.h:

 int FastGeomQuadArrayLength;
 int NumberOfFastGeomQuadArrays;
 int NextArrayIndex;
 int NextQuadIndex;

All are set to vtkIdType.

Also, I needed to change how FastGeomQuadArrayLength is initialised in
vtkDataSetSurfaceFilter::InitFastGeomQuadAllocation.  So, I changed
line 1662 from

 this->FastGeomQuadArrayLength = (numberOfCells / 2) * quadSize;

to

 this->FastGeomQuadArrayLength = (numberOfCells / 2l) * quadSize;

This now allows up to 2 billion cells (since the numberOfCells
variable is passed as an int) which is sufficient for my users!

Thanks for all the help,
Paul

2008/10/28 Michael Jackson <mike.jackson at bluequartz.net>:
> Sure he needs more than 2^31. 32 bit signed value of -1721647736
> (0x9961BD88) can be reinterpreted as 2573319560 in unsigned 32 bit value. So
> Paul has overflowed the capacity of a signed 32 bit integer. I had already
> submitted a few patches for vtkDataSetSurfaceFilter for 32/64 bit issues.
> There obviously seem to be more.
>
> In the header file we have:
>
> int FastGeomQuadArrayLength;
>
> And if we look at the debug session that Paul sent:
>
> (gdb) print this->FastGeomQuadArrayLength
> $2 = -1721647736
>
> We can see that he is over flowing the index. My guess (and I have no way of
> testing this) would be to declare some of the "int"s in that class to be
> vtkIdType instead.
>
> At least these
>  int FastGeomQuadArrayLength;
>  int NumberOfFastGeomQuadArrays;
>
>  // These indexes allow us to find the next available face.
>  int NextArrayIndex;
>  int NextQuadIndex;
>
> Paul, are you in a position where you can make the changes and recompile
> paraview?
>
> _________________________________________________________
> Mike Jackson                  mike.jackson at bluequartz.net
>            www.bluequartz.net
>
> On Oct 28, 2008, at 10:10 AM, Moreland, Kenneth wrote:
>
>> Paul,
>>
>> Have you compiled with VTK_USE_64BIT_IDS set to on?  I wouldn't think you
>> would be needing an id > 2^31, but if you did that could cause problems.
>>
>> -Ken
>>
>>
>> On 10/28/08 2:12 AM, "Paul Edwards" <paul.m.edwards at gmail.com> wrote:
>>
>>> This is running the latest CVS version, linux (Suse 9.3) and 64bit.
>>> It is definitely not a problem with memory allocation - the machine
>>> has 64GB of RAM and it was only using about 14GB for the mesh with
>>> solution (even less for the example in the last email).  I did have a
>>> quick try changing the variable to unsigned int but there were other
>>> problems.    I understand people use ParaView for much bigger meshes
>>> but it must just be because it is all in one block.
>>>
>>> Regards,
>>> Paul
>>>
>>> 2008/10/27 Michael Jackson <mike.jackson at bluequartz.net>:
>>>>
>>>> Looks like you may be running into a 32/64 bit bug. Does the program
>>>> crash
>>>> because it can not allocate enough memory or something else. Your gdb
>>>> session below seems to indicate that the length variable needs to be a
>>>> 64
>>>> bit value, or at least unsigned.
>>>>
>>>> What system/compiler is this on?
>>>> _________________________________________________________
>>>> Mike Jackson                  mike.jackson at bluequartz.net
>>>> BlueQuartz Software                    www.bluequartz.net
>>>> Principal Software Engineer                  Dayton, Ohio
>>>>
>>>>
>>>>
>>>> On Oct 27, 2008, at 12:28 PM, Paul Edwards wrote:
>>>>
>>>>> Has anyone else experienced this problem?  Is it just because I have
>>>>> so many cells in one block?  To reproduce: compile structured grid
>>>>> generator that is attached, create grid with dimensions 1000 x 1000 x
>>>>> 80, use clean to grid to make unstructured, and then try viewing the
>>>>> surface.
>>>>>
>>>>> Note: this uses quite a bit of memory....
>>>>>
>>>>> Regards,
>>>>> Paul
>>>>>
>>>>> 2008/10/17 Edwards, Paul <Paul.Edwards3 at rolls-royce.com>:
>>>>>>
>>>>>> I think this int needs to be unsigned (or more bits)S..
>>>>>>
>>>>>>
>>>>>>
>>>>>> (gdb) frame 3
>>>>>>
>>>>>> #3  0x00002aaab2c053ea in vtkDataSetSurfaceFilter::NewFastGeomQuad
>>>>>> (this=0x14fe670, numPts=4)
>>>>>>
>>>>>>  at
>>>>>>
>>>>>>
>>>>>> /tmp/padramgui-1.1/tmp/src/paraview/VTK/Graphics/vtkDataSetSurfaceFilter.cx
>>>>>> x:1730
>>>>>>
>>>>>> 1730        this->FastGeomQuadArrays[this->NextArrayIndex]
>>>>>>
>>>>>> (gdb) list
>>>>>>
>>>>>> 1720            }
>>>>>>
>>>>>> 1721          }
>>>>>>
>>>>>> 1722        delete [] this->FastGeomQuadArrays;
>>>>>>
>>>>>> 1723        this->FastGeomQuadArrays = newArrays;
>>>>>>
>>>>>> 1724        this->NumberOfFastGeomQuadArrays = num;
>>>>>>
>>>>>> 1725        }
>>>>>>
>>>>>> 1726
>>>>>>
>>>>>> 1727      // Next: allocate a new array if necessary.
>>>>>>
>>>>>> 1728      if (this->FastGeomQuadArrays[this->NextArrayIndex] == NULL)
>>>>>>
>>>>>> 1729        {
>>>>>>
>>>>>> 1730        this->FastGeomQuadArrays[this->NextArrayIndex]
>>>>>>
>>>>>> 1731          = new unsigned char[this->FastGeomQuadArrayLength];
>>>>>>
>>>>>> 1732        }
>>>>>>
>>>>>> 1733
>>>>>>
>>>>>> 1734      vtkFastGeomQuad* q = reinterpret_cast<vtkFastGeomQuad*>
>>>>>>
>>>>>> 1735        (this->FastGeomQuadArrays[this->NextArrayIndex] +
>>>>>> this->NextQuadIndex);
>>>>>>
>>>>>> 1736      q->numPts = numPts;
>>>>>>
>>>>>> 1737
>>>>>>
>>>>>> 1738      this->NextQuadIndex += polySize;
>>>>>>
>>>>>> 1739
>>>>>>
>>>>>> (gdb) print this->FastGeomQuadArrayLength
>>>>>>
>>>>>> $2 = -1721647736
>>>>>>
>>>>>> (gdb) whatis this->FastGeomQuadArrayLength
>>>>>>
>>>>>> type = int
>>>>>>
>>>>>> (gdb)
>>>>>>
>>>>>>
>>>>>>
>>>>>> More than just that variable needs to be updated though.
>>>>>>
>>>>>>
>>>>>>
>>>>>> I experienced this when viewing the surface of a mesh with 90M cells
>>>>>> on a
>>>>>> single machine.  Cuts worked without any problems.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Paul
>>>>>>
>>>>>> The data contained in, or attached to, this e-mail, may contain
>>>>>> confidential
>>>>>> information. If you have received it in error you should notify the
>>>>>> sender
>>>>>> immediately by reply e-mail, delete the message from your system and
>>>>>> contact
>>>>>> +44 (0) 1332 242424 (the Rolls-Royce IT Security Director) if you need
>>>>>> assistance. Please do not copy it for any purpose, or disclose its
>>>>>> contents
>>>>>> to any other person.
>>>>>>
>>>>>> An e-mail response to this address may be subject to interception or
>>>>>> monitoring for operational reasons or for lawful business practices.
>>>>>>
>>>>>> (c) 2008 Rolls-Royce plc
>>>>>>
>>>>>> Registered office: 65 Buckingham Gate, London SW1E 6AT Company number:
>>>>>> 1003142. Registered in England.
>>>>>>
>>>>>> _______________________________________________
>>>>>> ParaView mailing list
>>>>>> ParaView at paraview.org
>>>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> <vtkStructuredGridGenerator.h><vtkStructuredGridGenerator.cxx><vtkStructured
>>>>> GridGenerator.xml>_______________________________________________
>>>>> ParaView mailing list
>>>>> ParaView at paraview.org
>>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>
>>>>
>>> _______________________________________________
>>> ParaView mailing list
>>> ParaView at paraview.org
>>> http://www.paraview.org/mailman/listinfo/paraview
>>>
>>>
>>
>>
>>  ****      Kenneth Moreland
>>   ***      Sandia National Laboratories
>> ***********
>> *** *** ***  email: kmorel at sandia.gov
>> **  ***  **  phone: (505) 844-8919
>>   ***      fax:   (505) 845-0833
>>
>>
>>
>
> _______________________________________________
> ParaView mailing list
> ParaView at paraview.org
> http://www.paraview.org/mailman/listinfo/paraview
>


More information about the ParaView mailing list