[vtkusers] vtkGraph::AddVertex segfault

Caleb Johnston cjj37 at cornell.edu
Thu May 13 17:02:28 EDT 2010


I think you're probably right. I'm setting up a very simple test case now.
If it fails for some reason I'll get back to you. Otherwise I suppose I just
need more time, one-on-one, with GDB...

thanks,
Caleb


On Thu, May 13, 2010 at 4:49 PM, Aashish Chaudhary <
aashish.chaudhary at kitware.com> wrote:

> I think like I said the problem is not with the AddVerex.. its not a memory
> issue (unless I miss something somewhere).
>
> I believe after your call somehow memory gets corrupted and after that its
> just matter of time  when you get segfault (like you said its
> inconsistent).
>
> So if you don't do anything with the graph, do you get clean run of your
> program? Can you replicate the problem on your systems using a very simple
> minimal program? Problem like this its hard to debug.
>
> ~Regards,
>
>
>
> On Thu, May 13, 2010 at 4:12 PM, Caleb Johnston <cjj37 at cornell.edu> wrote:
>
>> Sorry, I wanted to clarify that I was mistaken about that GDB output. As
>> you might expect, those internal error statements are output at the start.
>>
>> The program does still crash in release mode, and from what I can tell it
>> happens at the same point.
>>
>> Caleb
>>
>>
>> On Thu, May 13, 2010 at 4:07 PM, Aashish Chaudhary <
>> aashish.chaudhary at kitware.com> wrote:
>>
>>>
>>> On Thu, May 13, 2010 at 3:59 PM, Caleb Johnston <cjj37 at cornell.edu>wrote:
>>>
>>>> I only get a SIGSEGV signal from the OS. However, I do get some other
>>>> strange behavior that I don't fully understand. I have included it below.
>>>>
>>>> When I start the program in the debugger, I get this:
>>>> ** (<unknown>:15767): CRITICAL **: atk_object_set_name: assertion `name
>>>> != NULL' failed
>>>>
>>>> I believe this is gtk / gnome issue. I used to see this when I was using
>>> Ubuntu 9.04 not anymore with 10.04
>>>
>>>
>>>> And when the seg fault happens, I see this:
>>>> (Internal error: pc 0x3b4adb in read in psymtab, but not in symtab.)
>>>> (Internal error: pc 0x3b4ada in read in psymtab, but not in symtab.)
>>>> (Internal error: pc 0x3b4ada in read in psymtab, but not in symtab.)
>>>> (Internal error: pc 0x3b4ada in read in psymtab, but not in symtab.)
>>>> (Internal error: pc 0x3b4a80 in read in psymtab, but not in symtab.)
>>>> (Internal error: pc 0x3c25a7 in read in psymtab, but not in symtab.)
>>>> (Internal error: pc 0x3c25a6 in read in psymtab, but not in symtab.)
>>>> (Internal error: pc 0x3c25a6 in read in psymtab, but not in symtab.)
>>>> (Internal error: pc 0x3c25a6 in read in psymtab, but not in symtab.)
>>>> (Internal error: pc 0x3c2390 in read in psymtab, but not in symtab.)
>>>>
>>>> I just did a quick google search .. looks like this is more or less gdb
>>> issue
>>>
>>>>
>>>> On windows, I just get error code 3 at the same point. The only reason I
>>>> tried to perform the Update call is because I thought it might alleviate
>>>> this problem. But it didn't. If its of use, here is some more system info:
>>>>
>>>> Linux: Ubuntu 9.10
>>>> Windows: XP SP3
>>>>
>>>> Linux runs in VMware Fusion but i get the same problem in windows
>>>> without the VM. And the Windows machine has over 3GB of Ram, so I doubt that
>>>> its out of memory in this case.
>>>>
>>>> Does your program crash in release mode (release build) ?
>>>
>>>
>>>>  thanks,
>>>> Caleb
>>>>
>>>>
>>>> On Thu, May 13, 2010 at 3:45 PM, Aashish Chaudhary <
>>>> aashish.chaudhary at kitware.com> wrote:
>>>>
>>>>> normally a push on vector should not result in crash. Something else is
>>>>> wrong somewhere.
>>>>>
>>>>> Also are you getting std::bad_alloc exception?
>>>>>
>>>>>
>>>>> On Thu, May 13, 2010 at 3:41 PM, Caleb Johnston <cjj37 at cornell.edu>wrote:
>>>>>
>>>>>> If I comment out the code, it does not crash. But I also have to end
>>>>>> the whole control flow at that point because everything after it depends
>>>>>> upon that data. But there is no crash.
>>>>>>
>>>>>> Caleb
>>>>>>
>>>>>>
>>>>>> On Thu, May 13, 2010 at 3:25 PM, Aashish Chaudhary <
>>>>>> aashish.chaudhary at kitware.com> wrote:
>>>>>>
>>>>>>> Can you try this..
>>>>>>>
>>>>>>> Can you comment the code where you are loading volume data? And see
>>>>>>> if you can replicate the crash?
>>>>>>>
>>>>>>>
>>>>>>> On Thu, May 13, 2010 at 3:17 PM, Caleb Johnston <cjj37 at cornell.edu>wrote:
>>>>>>>
>>>>>>>> The code is not that compilable without Qt, VTK, ITK, and Cmake
>>>>>>>> installed. It is publicly hosted at SourceForge:
>>>>>>>> http://sourceforge.net/projects/glassbrain/
>>>>>>>>
>>>>>>>> And the stack trace shows the problem arrises from the AddVertex
>>>>>>>> call.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, May 13, 2010 at 2:25 PM, David Doria <
>>>>>>>> daviddoria+vtk at gmail.com <daviddoria%2Bvtk at gmail.com>> wrote:
>>>>>>>>
>>>>>>>>> On Thu, May 13, 2010 at 2:16 PM, Caleb Johnston <cjj37 at cornell.edu>
>>>>>>>>> wrote:
>>>>>>>>> > I'm getting a segfault when calling
>>>>>>>>> vtkMutableUndirectedGraph::AddVertex.
>>>>>>>>> > However, it does not always occur at the same vertex. Sometimes
>>>>>>>>> it is after
>>>>>>>>> > the 2nd vertex. Sometimes it won't happen at all (though rarely).
>>>>>>>>> I'm only
>>>>>>>>> > adding about 120 vertices. And the program is not consuming large
>>>>>>>>> amounts of
>>>>>>>>> > data so I don't understand why this is happening. Also, this only
>>>>>>>>> happens in
>>>>>>>>> > Linux and Windows but not MacOS X. Below, I have included my
>>>>>>>>> algorithm for
>>>>>>>>> > adding vertices.
>>>>>>>>> > thanks,
>>>>>>>>> > Caleb
>>>>>>>>> > ...
>>>>>>>>> > int len = 0;
>>>>>>>>> > double X,Y,Z,Count;
>>>>>>>>> > for(i=0, j=0; j<numberOfLabels; i+=3, j++){
>>>>>>>>> >    X = (double)coords[i];
>>>>>>>>> >    Y = (double)coords[i+1];
>>>>>>>>> >    Z = (double)coords[i+2];
>>>>>>>>> >    Count = (double)centroids[j];
>>>>>>>>> >    if(Count>0.0){
>>>>>>>>> >       X = X / Count;
>>>>>>>>> >       Y = Y / Count;
>>>>>>>>> >       Z = Z / Count;
>>>>>>>>> >       len++;
>>>>>>>>> >       graph->AddVertex();  // crashes here.
>>>>>>>>> >       graph->Update();
>>>>>>>>> >       points->InsertNextPoint(X, Y, Z);
>>>>>>>>> >    }
>>>>>>>>> > }
>>>>>>>>> > ...
>>>>>>>>>
>>>>>>>>> I've used this in Linux plenty of times with no problems. If you
>>>>>>>>> post
>>>>>>>>> some compilable code I can see if it works on my machine. My
>>>>>>>>> initial
>>>>>>>>> bet is that something is going wrong around there, like accessing
>>>>>>>>> out
>>>>>>>>> of bounds elements in coords or centroids.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>
>>>>>>>>> David
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> 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
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> | Aashish Chaudhary
>>>>>>> | R&D Engineer
>>>>>>> | Kitware Inc.
>>>>>>> | www.kitware.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> | Aashish Chaudhary
>>>>> | R&D Engineer
>>>>> | Kitware Inc.
>>>>> | www.kitware.com
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> | Aashish Chaudhary
>>> | R&D Engineer
>>> | Kitware Inc.
>>> | www.kitware.com
>>>
>>
>>
>
>
> --
> | Aashish Chaudhary
> | R&D Engineer
> | Kitware Inc.
> | www.kitware.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100513/c341cb56/attachment.htm>


More information about the vtkusers mailing list