[vtkusers] Segmentation fault

elena bresciani elena.bresciani87 at gmail.com
Tue Apr 8 08:33:55 EDT 2014


Here it is, I omitted the inclusion of the header files and the output
section



int main ( int argc, char *argv[] )
{

    std::string filename = argv[1];

    // Read data from the file
    vtkSmartPointer<vtkXMLPolyDataReader> reader =
vtkSmartPointer<vtkXMLPolyDataReader>::New();
    reader->SetFileName(filename.c_str());
    reader->Update();

    // polydata object
    vtkSmartPointer<vtkPolyData> polydata = reader->GetOutput();

    // get normals
    vtkDoubleArray *pointNormalsArray = vtkDoubleArray::SafeDownCast
(polydata->GetPointData()->GetNormals());


    vtkSmartPointer<vtkPolyData> newpolydata =
vtkSmartPointer<vtkPolyData>::New();
    vtkSmartPointer<vtkPoints> newPoints =
vtkSmartPointer<vtkPoints>::New();

    // for every point p1 in the polydata find the point p2 which lies on
the normal at a distance D from p1

    for(vtkIdType i = 0; i < pointNormalsArray->GetNumberOfTuples(); i++)

       {
            double p1[3];
            polydata->GetPoint(i,p1); //prendo il punto

            double pN[3];
            pointNormalsArray->GetTuple(i, pN);

            double p2[3];
            double D=2*atoi(argv[3]);
            p2[0]=p1[0]-pN[0]*D;
            p2[1]=p1[1]-pN[1]*D;
            p2[2]=p1[2]-pN[2]*D;


            vtkIdType pid[1];
            pid[0]=newPoints->InsertNextPoint(p2);

        }

        //set points to polydata
        newpolydata->SetPoints(newPoints);

    return EXIT_SUCCESS;
}


2014-04-08 13:58 GMT+02:00 Bill Lorensen <bill.lorensen at gmail.com>:

> Please post a small, complete, compilable example that illustrates your
> problem.
>
> On Tue, Apr 8, 2014 at 3:19 AM, elena bresciani
> <elena.bresciani87 at gmail.com> wrote:
> > Thank you guys,
> >
> > I tried changing the type of PointNormalArray in vtkDoubleArray
> >
> > vtkDoubleArray *PointNormalArray = vtkDoubleArray::SafeDownCast(
> > polydata->GetPointData()->GetNormals() ) ;
> >
> > but I still have the segfault.
> >
> > Elena
> >
> >
> > 2014-04-07 19:31 GMT+02:00 Goodwin Lawlor <
> goodwin.lawlor.lists at gmail.com>:
> >
> >> Thanks for that link Shawn and setting me straight (I did day I could be
> >> wrong ;-))
> >>
> >> My logic was that if you had to do:
> >>
> >> vtkSmartPointer<vtkPolyData> polydata =
> >> vtkSmartPointer<vtkPolyData>::New();
> >>
> >> then initializing a smart pointer not created with the form on the RHS
> >> above wouldn't work...
> >>
> >> Goodwin
> >>
> >>
> >> On Mon, Apr 7, 2014 at 6:17 PM, Shawn Waldon <swaldon at cs.unc.edu>
> wrote:
> >>>
> >>> Hi Goodwin,
> >>>
> >>> It shouldn't be causing the segfault.  That line will create a new
> smart
> >>> pointer and set its internal pointer to the reader's output,
> incrementing
> >>> the reference count.
> >>> See
> >>>
> http://www.vtk.org/Wiki/VTK/Tutorials/SmartPointers#Getting_an_Object_with_a_Smart_Pointer
> >>> for details.  If the reference increment is unnecessary, then it is
> still
> >>> only a small performance gain and not a segfault causing bug.
> >>>
> >>> My guess for the segfault is what Bill said: the normals are in a
> >>> vtkDoubleArray not a vtkFloatArray so SafeDownCast is returning NULL.
> >>>
> >>> HTH,
> >>>
> >>> Shawn
> >>>
> >>>
> >>> On Mon, Apr 7, 2014 at 1:11 PM, Goodwin Lawlor
> >>> <goodwin.lawlor.lists at gmail.com> wrote:
> >>>>
> >>>> Hi Elena,
> >>>>
> >>>> I coud be wrong but I dont think this is correct:
> >>>>
> >>>>> vtkSmartPointer<vtkPolyData> polydata = reader->GetOutput();
> >>>>
> >>>>
> >>>> reader->GetOutput() returns a regular pointer to a vtkPolydata not a
> >>>> smart pointer.
> >>>>
> >>>> Try:
> >>>>
> >>>> vtkPolyData *polydata = reader->GetOutput();
> >>>>
> >>>> instead.
> >>>>
> >>>> hth
> >>>>
> >>>> Goodwin
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> On Mon, Apr 7, 2014 at 4:00 PM, elena bresciani
> >>>> <elena.bresciani87 at gmail.com> wrote:
> >>>>>
> >>>>> Hello everybody!
> >>>>>
> >>>>> I need your help with a segmentation fault error.
> >>>>> Using gdb I understood where it is generated but I don't know how to
> >>>>> modify the code to make it run.
> >>>>>
> >>>>> Here's the portion of the code that I'm talking about:
> >>>>>
> >>>>>
> >>>>> vtkSmartPointer<vtkPolyData> polydata = reader->GetOutput();
> >>>>> (the reader is a vtkXMLPolyDataReader)
> >>>>>
> >>>>> vtkFloatArray *PointNormalArray = vtkFloatArray::SafeDownCast(
> >>>>> polydata->GetPointData()->GetNormals() ) ;
> >>>>>
> >>>>> for(vtkIdType i = 0; i < PointNormalArray->GetNumberOfTuples(); i++)
> >>>>> {....}
> >>>>>
> >>>>> everytime I call GetNumberOfTuples I have this error so I think the
> >>>>> problem is on PointNormalArray.
> >>>>>
> >>>>> Can somebody help me?
> >>>>>
> >>>>> Thanks in advance
> >>>>>
> >>>>> Elena
> >>>>>
> >>>>> _______________________________________________
> >>>>> Powered by www.kitware.com
> >>>>>
> >>>>> Visit other Kitware open-source projects at
> >>>>> http://www.kitware.com/opensource/opensource.html
> >>>>>
> >>>>> Please keep messages on-topic and check the VTK FAQ at:
> >>>>> http://www.vtk.org/Wiki/VTK_FAQ
> >>>>>
> >>>>> Follow this link to subscribe/unsubscribe:
> >>>>> http://www.vtk.org/mailman/listinfo/vtkusers
> >>>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> Powered by www.kitware.com
> >>>>
> >>>> Visit other Kitware open-source projects at
> >>>> http://www.kitware.com/opensource/opensource.html
> >>>>
> >>>> Please keep messages on-topic and check the VTK FAQ at:
> >>>> http://www.vtk.org/Wiki/VTK_FAQ
> >>>>
> >>>> Follow this link to subscribe/unsubscribe:
> >>>> http://www.vtk.org/mailman/listinfo/vtkusers
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Shawn Waldon
> >>> Graduate Research Assistant
> >>> Department of Computer Science
> >>> University of North Carolina at Chapel Hill
> >>> swaldon at cs.unc.edu
> >>
> >>
> >
> >
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the VTK FAQ at:
> > http://www.vtk.org/Wiki/VTK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> >
>
>
>
> --
> Unpaid intern in BillsBasement at noware dot com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20140408/b2d13ae1/attachment.html>


More information about the vtkusers mailing list