[Python-apps-team] Bug#478844: mayavi2: segfaults or corrupts memory after some operations

Francesco Poli frx at firenze.linux.it
Thu May 1 12:17:07 UTC 2008


Package: mayavi2
Version: 2.1.1-2
Severity: important

Hi!

As I commented on bug #478017, I don't see mayavi2 crashing at startup.

On the other hand, I experience crashes after performing some
operations.
Please note that I've just upgraded mayavi2 from version 2.1.1-2 to
version 2.1.1-2+b1, but I've seen the same issue on last Monday
with version 2.1.1-2.

I could reproduce this bug as follows.  Let's take (again!) the test
case I prepared for bug #400406 (see [1] and [2]).

[1] http://bugs.debian.org/400406
[2] http://bugs.debian.org/cgi-bin/bugreport.cgi/vtk-multiblockPLOT3D-bug-test.tar.gz?bug=400406;msg=5;att=1

  $ tar xvzf vtk-multiblockPLOT3D-bug-test.tar.gz
  $ ls
  gen_tinyplot3d.f  tiny.q    vtk-multiblockPLOT3D-bug-test.tar.gz
  list_plot3d.py    tiny.xyz
  $ mayavi2 > ~/tmp/mayavi2.out 2> ~/tmp/mayavi2.err

The main window shows up.

 * from menus, select File -> Load data -> PLOT3D file
 * as XYZ Co-ordinate file, select `tiny.xyz'
 * as Q Solution file, select `tiny.q'
 * select PLOT3D:tiny.xyz, tiny.q  in the MayaVi pane
 * in the PLOT3DReader tab (inside the object editor), check "Binary
file", "Do not reduce number of outputs", "Has byte count", and "Multi
grid"; *un*check "Force read", "I blanking", and "Two dimensional
geometry"; select "little_endian" Byte order
 * in the Reader tab, click on the "Update Reader" button

OK, now we are ready to visualize the data...

 * from menus, select Visualize -> Modules -> Surface (a blue square
shows up in the TVTK scene)
 * in the MayaVi pane, right-click on PLOT3D:tiny.xyz, tiny.q and
choose copy from the context menu

Boom!  Segmentation fault!

Relevant info in /var/log/kern.log:

  python[7379]: segfault at 2b7915ea1f40 rip 4b46cb rsp 7fffa3e3ccd0 error 7

File ~/tmp/mayavi2.out is empty:

  $ cat ~/tmp/mayavi2.out

File ~/tmp/mayavi2.err includes just a (possibly irrelevant) message:

  $ cat ~/tmp/mayavi2.err

  (python:7379): Gtk-CRITICAL **: gtk_widget_set_colormap: assertion `!GTK_WIDGET_REALIZED (widget)' failed


After this test, I said to myself: "OK, let's see if this bug is
well reproducible".
Hence, I started the above procedure over again.
To my surprise, I repeated all the above steps and didn't get a segfault
at the same point!
When I chose copy from the context menu, the command was accepted.
Then I added one more step:

 * in the MayaVi pane, right-click on TVTK Scene 1 in order to choose
paste from the context menu

Boom!  Memory corruption!

The following messages were spit out to the terminal (despite my stdout
and stderr redirections...):

*** glibc detected *** python: malloc(): memory corruption (fast): 0x00000000045
83360 ***
======= Backtrace: =========
/lib/libc.so.6[0x2adff47c701d]
/lib/libc.so.6[0x2adff47c96c5]
/lib/libc.so.6(__libc_malloc+0x90)[0x2adff47ca920]
/usr/lib/libstdc++.so.6(_Znwm+0x1d)[0x2adff888bb7d]
/usr/lib/libvtkCommon.so.5.0(_ZN24vtkSimpleCriticalSection3NewEv+0x18)[0x2ae002e
b1248]
/usr/lib/libvtkCommon.so.5.0(_ZN20vtkAbstractTransformC2Ev+0x51)[0x2ae002e9fdc1]
/usr/lib/libvtkCommon.so.5.0(_ZN23vtkHomogeneousTransformC2Ev+0x16)[0x2ae002ee85
26]
/usr/lib/libvtkCommon.so.5.0(_ZN25vtkTransformConcatenation11ConcatenateEPKd+0x1
01)[0x2ae002ea1e51]
/usr/lib/libvtkRendering.so.5.0(_ZN8vtkActor9GetBoundsEv+0x352)[0x2ae0070f11a2]
/usr/lib/libvtkRendering.so.5.0(_ZN24vtkFrustumCoverageCuller4CullEP11vtkRendere
rPP7vtkPropRiS5_+0xca)[0x2ae00710a0ca]
/usr/lib/libvtkRendering.so.5.0(_ZN11vtkRenderer12AllocateTimeEv+0x98)[0x2ae0071
6c318]
/usr/lib/libvtkRendering.so.5.0(_ZN11vtkRenderer6RenderEv+0x235)[0x2ae00716c5e5]
/usr/lib/libvtkRendering.so.5.0(_ZN21vtkRendererCollection6RenderEv+0x81)[0x2ae0
071721d1]
/usr/lib/libvtkRendering.so.5.0(_ZN15vtkRenderWindow14DoStereoRenderEv+0x2e)[0x2
ae00715fc2e]
/usr/lib/libvtkRendering.so.5.0(_ZN15vtkRenderWindow10DoFDRenderEv+0x34e)[0x2ae0
07161b6e]
/usr/lib/libvtkRendering.so.5.0(_ZN15vtkRenderWindow10DoAARenderEv+0x464)[0x2ae0
071620d4]
/usr/lib/libvtkRendering.so.5.0(_ZN15vtkRenderWindow6RenderEv+0x101)[0x2ae007160
f11]
/usr/lib/libvtkRendering.so.5.0(_ZN22vtkXOpenGLRenderWindow6RenderEv+0x3e)[0x2ae
0071d571e]
/usr/lib/libvtkRenderingPythonD.so.5.0[0x2ae006d6b059]
python(PyEval_EvalFrameEx+0x661b)[0x48899b]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalCodeEx+0x776)[0x489756]
python[0x4d3878]
python(PyObject_Call+0x13)[0x417c73]
python[0x41e47f]
python(PyObject_Call+0x13)[0x417c73]
python[0x41ea22]
python(PyObject_Call+0x13)[0x417c73]
/usr/lib/python2.5/site-packages/enthought/traits/ctraits.so[0x2adff64f22d6]
python(PyObject_SetAttr+0xb8)[0x445ae8]
python[0x47d73f]
python(PyEval_EvalFrameEx+0x661b)[0x48899b]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalCodeEx+0x776)[0x489756]
python(PyEval_EvalFrameEx+0x5045)[0x4873c5]
python(PyEval_EvalCodeEx+0x776)[0x489756]
python(PyEval_EvalFrameEx+0x5045)[0x4873c5]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalFrameEx+0x5bd7)[0x487f57]
python(PyEval_EvalCodeEx+0x776)[0x489756]
python[0x4d3878]
python(PyObject_Call+0x13)[0x417c73]
python[0x41e47f]
======= Memory map: ========
00400000-0051b000 r-xp 00000000 fe:04 64717                              /usr/bi
n/python2.5
0071a000-0074c000 rw-p 0011a000 fe:04 64717                              /usr/bi
n/python2.5
0074c000-04609000 rw-p 0074c000 00:00 0                                  [heap]
2adff3c9a000-2adff3cb5000 r-xp 00000000 fe:01 59026                      /lib/ld
-2.7.so
2adff3cb5000-2adff3d3a000 rw-p 2adff3cb5000 00:00 0 
2adff3d3a000-2adff3e74000 r--p 00000000 fe:04 955503                     /usr/li
b/locale/locale-archive
2adff3eb4000-2adff3eb6000 rw-p 0001a000 fe:01 59026                      /lib/ld
-2.7.so
2adff3eb6000-2adff3ecc000 r-xp 00000000 fe:01 59131                      /lib/li
bpthread-2.7.so
2adff3ecc000-2adff40cb000 ---p 00016000 fe:01 59131                      /lib/li
bpthread-2.7.so
2adff40cb000-2adff40cd000 rw-p 00015000 fe:01 59131                      /lib/li
bpthread-2.7.so
2adff40cd000-2adff40d1000 rw-p 2adff40cd000 00:00 0 
2adff40d1000-2adff40d3000 r-xp 00000000 fe:01 59098                      /lib/li
bdl-2.7.so
2adff40d3000-2adff42d3000 ---p 00002000 fe:01 59098                      /lib/li
bdl-2.7.so
2adff42d3000-2adff42d5000 rw-p 00002000 fe:01 59098                      /lib/li
bdl-2.7.so
2adff42d5000-2adff42d7000 r-xp 00000000 fe:01 59142                      /lib/li
butil-2.7.so
2adff42d7000-2adff44d6000 ---p 00002000 fe:01 59142                      /lib/li
butil-2.7.so
2adff44d6000-2adff44d8000 rw-p 00001000 fe:01 59142                      /lib/li
butil-2.7.so
2adff44d8000-2adff44d9000 rw-p 2adff44d8000 00:00 0 
2adff44d9000-2adff4557000 r-xp 00000000 fe:01 59114                      /lib/li
bm-2.7.so
2adff4557000-2adff4756000 ---p 0007e000 fe:01 59114                      /lib/li
bm-2.7.so
2adff4756000-2adff4758000 rw-p 0007d000 fe:01 59114                      /lib/li
bm-2.7.so
2adff4758000-2adff4896000 r-xp 00000000 fe:01 59079                      /lib/li
bc-2.7.so
2adff4896000-2adff4a96000 ---p 0013e000 fe:01 59079                      /lib/li
bc-2.7.so
2adff4a96000-2adff4a99000 r--p 0013e000 fe:01 59079                      /lib/li
bc-2.7.so
2adff4a99000-2adff4a9b000 rw-p 00141000 fe:01 59079                      /lib/li
bc-2.7.so
2adff4a9b000-2adff4aa2000 rw-p 2adff4a9b000 00:00 0 
2adff4aa2000-2adff4aa6000 r-xp 00000000 fe:04 1068745                    /usr/li
b/python2.5/lib-dynload/time.so
2adff4aa6000-2adff4ca5000 ---p 00004000 fe:04 1068745                    /usr/li
b/python2.5/lib-dynload/time.so
2adff4ca5000-2adff4ca7000 rw-p 00003000 fe:04 1068745                    /usr/li
b/python2.5/lib-dynload/time.so
2adff4ca7000-2adff4cac000 r-xp 00000000 fe:04 1068743                    /usr/li
b/python2.5/lib-dynload/strop.so
2adff4cac000-2adff4eab000 ---p 00005000 fe:04 1068743                    /usr/li
b/python2.5/lib-dynload/strop.so
2adff4eab000-2adff4ead000 rw-p 00004000 fe:04 1068743                    /usr/li
b/python2.5/lib-dynload/strop.so
2adff4ead000-2adff4eb4000 r-xp 00000000 fe:04 1068741                    /usr/li
b/python2.5/lib-dynload/operator.so
2adff4eb4000-2adff50b4000 ---p 00007000 fe:04 1068741                    /usr/li
b/python2.5/lib-dynload/operator.so
2adff50b4000-2adff50b6000 rw-p 00007000 fe:04 1068741                    /usr/li
b/python2.5/lib-dynload/operator.so
2adff50b6000-2adff50ba000 r-xp 00000000 fe:04 1068734                    /usr/li
b/python2.5/lib-dynload/cStringIO.so
2adff50ba000-2adff52b9000 ---p 00004000 fe:04 1068734                    /usr/li
b/python2.5/lib-dynload/cStringIO.so
2adff52b9000-2adff52bb000 rw-p 00003000 fe:04 1068734                    /usr/li
b/python2.5/lib-dynload/cStringIO.so
2adff52bb000-2adff52c0000 r-xp 00000000 fe:04 1068755                    /usr/li
b/python2.5/lib-dynload/collections.so
2adff52c0000-2adff54c0000 ---p 00005000 fe:04 1068755                    /usr/li
b/python2.5/lib-dynload/collections.so
2adff54c0000-2adff54c2000 rw-p 00005000 fe:04 1068755                    /usr/li
b/python2.5/lib-dynload/collections.so
2adff54c2000-2adff54ce000 r-xp 00000000 fe:04 1068732                    /usr/li
b/python2.5/lib-dAborted



The two files ~/tmp/mayavi2.out and ~/tmp/mayavi2.err were recreated
as in the first test.

I hope this bug can be fixed soon.


-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.24-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages mayavi2 depends on:
ii  libc6                        2.7-10      GNU C Library: Shared libraries
ii  python                       2.5.2-1     An interactive high-level object-o
ii  python-central               0.6.6       register and build utility for Pyt
ii  python-enthought-traits      2.0.4-2     Manifest typing and reactive progr
ii  python-enthought-traits-ui   2.0.4-2     User interface related modules for
ii  python-numpy                 1:1.0.4-7   Numerical Python adds a fast array
ii  python-pkg-resources         0.6c8-3     Package Discovery and Resource Acc
ii  python-vtk                   5.0.4-1+b1  Python bindings for VTK
ii  python-wxgtk2.6              2.6.3.2.2-2 wxWidgets Cross-platform C++ GUI t
ii  python2.5                    2.5.2-3     An interactive high-level object-o

mayavi2 recommends no packages.

-- no debconf information





More information about the Python-apps-team mailing list