[vtk-developers] Intermittent segfault in vtkImage.DeepCopy

Yves Starreveld ystarrev at uwo.ca
Thu Jul 26 01:45:52 EDT 2001


Hi,

The following simple example will always segfault on a multi-cpu machine.

> .....
> adder = vtkImageMathematics()
> adder.SetInput1(a)
> adder.SetInput2(b)
> adder.SetOperationToAdd()
> for x in xrange(10000):
>   adder.Update()
>   b.DeepCopy(adder.GetOutput())
.....

The code runs fine when a ShallowCopy is used instead.

Its hard to track down since gdb often runs out of allocatable threads 
before the crash occurs.
Here is a backtrace, however:

> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 559651 (LWP 30674)]
> __strtol_internal (nptr=0x4261eb88 "", endptr=0x12, base=32,
>     group=1099504609) at eval.c:36
> 36      eval.c: No such file or directory.
>         in eval.c
> (gdb) bt
> #0  __strtol_internal (nptr=0x4261eb88 "", endptr=0x12, base=32,
>     group=1099504609) at eval.c:36
> #1  0x419735a7 in vtkAttributeData::GetVoidPointer (this=0x4261eb88, 
> id=18)
>     at vtkAttributeData.h:109
> #2  0x4189216b in vtkImageData::GetScalarPointer (this=0x812a0a8,
>     coordinates=0x864ff918) at vtkImageData.cxx:1502
> #3  0x41891bb5 in vtkImageData::GetScalarPointerForExtent 
> (this=0x812a0a8,
>     extent=0x864ffa90) at vtkImageData.cxx:1459
> #4  0x4086a2d5 in vtkImageMathematics::ThreadedExecute (this=0x812acf8,
>     inData=0x812b318, outData=0x812ad90, outExt=0x864ffa90, id=1)
>     at vtkImageMathematics.cxx:410
> #5  0x40a1b900 in vtkImageMultiThreadedExecute (arg=0x812e960)
>     at vtkImageMultipleInputFilter.cxx:219
> #6  0x40031bfd in pthread_start_thread (arg=0x864ffc00) at manager.c:262
> #7  0x40031cdf in pthread_start_thread_event (arg=0x864ffc00)
>     at manager.c:285


Perhaps someone has an idea on this?

Yves

The full python code is attached.
<Attachment missing>
-------------- next part --------------
Hi,

The following simple example will always segfault on a multi-cpu machine.

> .....
> adder = vtkImageMathematics()
> adder.SetInput1(a)
> adder.SetInput2(b)
> adder.SetOperationToAdd()
> for x in xrange(10000):
>   adder.Update()
>   b.DeepCopy(adder.GetOutput())
.....

The code runs fine when a ShallowCopy is used instead.

Its hard to track down since gdb often runs out of allocatable threads 
before the crash occurs.
Here is a backtrace, however:

> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 559651 (LWP 30674)]
> __strtol_internal (nptr=0x4261eb88 "", endptr=0x12, base=32,
>     group=1099504609) at eval.c:36
> 36      eval.c: No such file or directory.
>         in eval.c
> (gdb) bt
> #0  __strtol_internal (nptr=0x4261eb88 "", endptr=0x12, base=32,
>     group=1099504609) at eval.c:36
> #1  0x419735a7 in vtkAttributeData::GetVoidPointer (this=0x4261eb88, 
> id=18)
>     at vtkAttributeData.h:109
> #2  0x4189216b in vtkImageData::GetScalarPointer (this=0x812a0a8,
>     coordinates=0x864ff918) at vtkImageData.cxx:1502
> #3  0x41891bb5 in vtkImageData::GetScalarPointerForExtent 
> (this=0x812a0a8,
>     extent=0x864ffa90) at vtkImageData.cxx:1459
> #4  0x4086a2d5 in vtkImageMathematics::ThreadedExecute (this=0x812acf8,
>     inData=0x812b318, outData=0x812ad90, outExt=0x864ffa90, id=1)
>     at vtkImageMathematics.cxx:410
> #5  0x40a1b900 in vtkImageMultiThreadedExecute (arg=0x812e960)
>     at vtkImageMultipleInputFilter.cxx:219
> #6  0x40031bfd in pthread_start_thread (arg=0x864ffc00) at manager.c:262
> #7  0x40031cdf in pthread_start_thread_event (arg=0x864ffc00)
>     at manager.c:285


Perhaps someone has an idea on this?

Yves

The full python code is attached.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: testDeepCopy.py
Type: application/octet-stream
Size: 708 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20010726/5f829b6c/attachment-0001.obj>


More information about the vtk-developers mailing list