[Python-modules-team] Bug#585442: python-matplotlib: crashes when calling axis() after imshow()

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro

mpl_crash.py (127 Bytes)

···

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen <tpikonen@...149...> wrote:

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and changes the
axes with plt.axis() before calling plt.show() crashes the python interpreter:

$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

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

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii libc6 2.10.2-9 Embedded GNU C Library: Shared lib
ii libcairo2 1.8.10-4 The Cairo 2D vector graphics libra
ii libfontconfig1 2.8.0-2.1 generic font configuration library
ii libfreetype6 2.3.11-1 FreeType 2 font engine, shared lib
ii libgcc1 1:4.4.4-1 GCC support library
ii libglib2.0-0 2.24.1-1 The GLib library of C routines
ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user interface
ii libpango1.0-0 1.28.0-1 Layout and rendering of internatio
ii libpng12-0 1.2.43-1 PNG library - runtime
ii libstdc++6 4.4.4-1 The GNU Standard C++ Library v3
ii python 2.5.4-9 An interactive high-level object-o
ii python-cairo 1.8.8-1+b1 Python bindings for the Cairo vect
ii python-dateutil 1.4.1-3 powerful extensions to the standar
ii python-gobject 2.21.1-1 Python bindings for the GObject li
ii python-matplotlib-data 0.99.1.2-3 Python based plotting system (data
ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a fast array
ii python-pyparsing 1.5.2-2 Python parsing module
ii python-support 1.0.8 automated rebuilding support for P
ii python-tz 2010b-1 Python version of the Olson timezo
ii tcl8.5 8.5.8-2 Tcl (the Tool Command Language) v8
ii tk8.5 8.5.8-1 Tk toolkit for Tcl and X11, v8.5 -
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages python-matplotlib recommends:
ii python-glade2 2.17.0-2 GTK+ bindings: Glade support
ii python-tk 2.6.5-1 Tkinter - Writing Tk applications

Versions of packages python-matplotlib suggests:
ii dvipng 1.13-1 convert DVI files to PNG graphics
ii ipython 0.10-2 enhanced interactive Python shell
ii librsvg2-common 2.26.3-1 SAX-based renderer library for SVG
ii python-configobj 4.7.2+ds-1 simple but powerful config file re
pn python-excelerator <none> (no description available)
ii python-gtk2 2.17.0-2 Python bindings for the GTK+ widge
pn python-matplotlib-doc <none> (no description available)
pn python-qt3 <none> (no description available)
ii python-qt4 4.7.3-1 Python bindings for Qt4
ii python-scipy 0.7.2-1 scientific tools for Python
ii python-traits 3.3.0-1 Manifest typing and reactive progr
ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform C++ GUI t
ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary programs
ii texlive-latex-extra 2009-7 TeX Live: LaTeX supplementary pack

-- no debconf information

_______________________________________________
Python-modules-team mailing list
Python-modules-team@...633...
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

--
Sandro Tosi (aka morph, morpheus, matrixhasu)
My website: http://matrixhasu.altervista.org/
Me at Debian: http://wiki.debian.org/SandroTosi

I can reproduce here on Gentoo, both with 0.99.3 and SVN trunk.

Trunk has the following warnings:

/home/rmay/.local/lib/python2.6/site-packages/matplotlib/axes.py:2305:
UserWarning: Attempting to set identical xmin==xmax results in
singular transformations; automatically expanding. xmin=0, xmax=0
  warnings.warn('Attempting to set identical xmin==xmax results in
singular transformations; automatically expanding. xmin=%s,
xmax=%s'%(xmin, xmax))
/home/rmay/.local/lib/python2.6/site-packages/matplotlib/axes.py:2479:
UserWarning: Attempting to set identical ymin==ymax results in
singular transformations; automatically expanding. ymin=1.0, ymax=1.0
  warnings.warn('Attempting to set identical ymin==ymax results in
singular transformations; automatically expanding. ymin=%s,
ymax=%s'%(ymin, ymax))
terminate called after throwing an instance of 'char const*'

So it doesn't seem completely odd that we have a crash here, but
should still be fixed (by someone who has a clue what might be going
on, which isn't me.)

Ryan

···

On Mon, Jun 21, 2010 at 5:24 PM, Sandro Tosi <morph@...12...> wrote:

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen <tpikonen@...149...> wrote:

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and changes the
axes with plt.axis() before calling plt.show() crashes the python interpreter:

$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

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

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii libc6 2.10.2-9 Embedded GNU C Library: Shared lib
ii libcairo2 1.8.10-4 The Cairo 2D vector graphics libra
ii libfontconfig1 2.8.0-2.1 generic font configuration library
ii libfreetype6 2.3.11-1 FreeType 2 font engine, shared lib
ii libgcc1 1:4.4.4-1 GCC support library
ii libglib2.0-0 2.24.1-1 The GLib library of C routines
ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user interface
ii libpango1.0-0 1.28.0-1 Layout and rendering of internatio
ii libpng12-0 1.2.43-1 PNG library - runtime
ii libstdc++6 4.4.4-1 The GNU Standard C++ Library v3
ii python 2.5.4-9 An interactive high-level object-o
ii python-cairo 1.8.8-1+b1 Python bindings for the Cairo vect
ii python-dateutil 1.4.1-3 powerful extensions to the standar
ii python-gobject 2.21.1-1 Python bindings for the GObject li
ii python-matplotlib-data 0.99.1.2-3 Python based plotting system (data
ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a fast array
ii python-pyparsing 1.5.2-2 Python parsing module
ii python-support 1.0.8 automated rebuilding support for P
ii python-tz 2010b-1 Python version of the Olson timezo
ii tcl8.5 8.5.8-2 Tcl (the Tool Command Language) v8
ii tk8.5 8.5.8-1 Tk toolkit for Tcl and X11, v8.5 -
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages python-matplotlib recommends:
ii python-glade2 2.17.0-2 GTK+ bindings: Glade support
ii python-tk 2.6.5-1 Tkinter - Writing Tk applications

Versions of packages python-matplotlib suggests:
ii dvipng 1.13-1 convert DVI files to PNG graphics
ii ipython 0.10-2 enhanced interactive Python shell
ii librsvg2-common 2.26.3-1 SAX-based renderer library for SVG
ii python-configobj 4.7.2+ds-1 simple but powerful config file re
pn python-excelerator <none> (no description available)
ii python-gtk2 2.17.0-2 Python bindings for the GTK+ widge
pn python-matplotlib-doc <none> (no description available)
pn python-qt3 <none> (no description available)
ii python-qt4 4.7.3-1 Python bindings for Qt4
ii python-scipy 0.7.2-1 scientific tools for Python
ii python-traits 3.3.0-1 Manifest typing and reactive progr
ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform C++ GUI t
ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary programs
ii texlive-latex-extra 2009-7 TeX Live: LaTeX supplementary pack

-- no debconf information

_______________________________________________
Python-modules-team mailing list
Python-modules-team@...633...
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

--
Sandro Tosi (aka morph, morpheus, matrixhasu)
My website: http://matrixhasu.altervista.org/
Me at Debian: http://wiki.debian.org/SandroTosi

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro

Sandro,

Thanks for reporting it.

With the default interpolation, rendering gets extremely slow as the view limits decline to and below a single image pixel. I suspect the crash is related to this. Neither the slowdown nor the crash occurs with interpolation='nearest', although there is still an anomaly in which the image is blank when the viewlim region is too small.

Like Ryan, I am not familiar with the _image.cpp and the underlying agg routines, but I suspect this is going to be a difficult problem to solve. It may be necessary to put in some workaround, trying to trap and prevent the extreme slowdown and crash. The slowdown topic came up on the list years ago.

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html

Eric

···

On 06/21/2010 12:24 PM, Sandro Tosi wrote:

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen<tpikonen@...149...> wrote:

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and changes the
axes with plt.axis() before calling plt.show() crashes the python interpreter:

$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

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

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii libc6 2.10.2-9 Embedded GNU C Library: Shared lib
ii libcairo2 1.8.10-4 The Cairo 2D vector graphics libra
ii libfontconfig1 2.8.0-2.1 generic font configuration library
ii libfreetype6 2.3.11-1 FreeType 2 font engine, shared lib
ii libgcc1 1:4.4.4-1 GCC support library
ii libglib2.0-0 2.24.1-1 The GLib library of C routines
ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user interface
ii libpango1.0-0 1.28.0-1 Layout and rendering of internatio
ii libpng12-0 1.2.43-1 PNG library - runtime
ii libstdc++6 4.4.4-1 The GNU Standard C++ Library v3
ii python 2.5.4-9 An interactive high-level object-o
ii python-cairo 1.8.8-1+b1 Python bindings for the Cairo vect
ii python-dateutil 1.4.1-3 powerful extensions to the standar
ii python-gobject 2.21.1-1 Python bindings for the GObject li
ii python-matplotlib-data 0.99.1.2-3 Python based plotting system (data
ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a fast array
ii python-pyparsing 1.5.2-2 Python parsing module
ii python-support 1.0.8 automated rebuilding support for P
ii python-tz 2010b-1 Python version of the Olson timezo
ii tcl8.5 8.5.8-2 Tcl (the Tool Command Language) v8
ii tk8.5 8.5.8-1 Tk toolkit for Tcl and X11, v8.5 -
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages python-matplotlib recommends:
ii python-glade2 2.17.0-2 GTK+ bindings: Glade support
ii python-tk 2.6.5-1 Tkinter - Writing Tk applications

Versions of packages python-matplotlib suggests:
ii dvipng 1.13-1 convert DVI files to PNG graphics
ii ipython 0.10-2 enhanced interactive Python shell
ii librsvg2-common 2.26.3-1 SAX-based renderer library for SVG
ii python-configobj 4.7.2+ds-1 simple but powerful config file re
pn python-excelerator<none> (no description available)
ii python-gtk2 2.17.0-2 Python bindings for the GTK+ widge
pn python-matplotlib-doc<none> (no description available)
pn python-qt3<none> (no description available)
ii python-qt4 4.7.3-1 Python bindings for Qt4
ii python-scipy 0.7.2-1 scientific tools for Python
ii python-traits 3.3.0-1 Manifest typing and reactive progr
ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform C++ GUI t
ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary programs
ii texlive-latex-extra 2009-7 TeX Live: LaTeX supplementary pack

-- no debconf information

_______________________________________________
Python-modules-team mailing list
Python-modules-team@...633...
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

In r8454, I have a applied a fix that allows this C++ exception to correctly percolate to the Python side -- the user will still get an exception, but it will be a Python exception and the interpreter itself does not crash. (It used to work, but recent changes to CXX caused it to break.) I have attached this patch to the e-mail.

As Eric suggests, fixing the underlying limitation (I even hesitate to call it a bug because it is definitely a corner case) requires understanding some pretty dark depths of the Agg renderer.

Mike

Attached Message (4.51 KB)

···

On 06/21/2010 10:57 PM, Eric Firing wrote:

On 06/21/2010 12:24 PM, Sandro Tosi wrote:
   

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro
     

Sandro,

Thanks for reporting it.

With the default interpolation, rendering gets extremely slow as the
view limits decline to and below a single image pixel. I suspect the
crash is related to this. Neither the slowdown nor the crash occurs
with interpolation='nearest', although there is still an anomaly in
which the image is blank when the viewlim region is too small.

Like Ryan, I am not familiar with the _image.cpp and the underlying agg
routines, but I suspect this is going to be a difficult problem to
solve. It may be necessary to put in some workaround, trying to trap
and prevent the extreme slowdown and crash. The slowdown topic came up
on the list years ago.

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html

Eric

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen<tpikonen@...149...> wrote:
     

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and changes the
axes with plt.axis() before calling plt.show() crashes the python interpreter:

$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

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

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii libc6 2.10.2-9 Embedded GNU C Library: Shared lib
ii libcairo2 1.8.10-4 The Cairo 2D vector graphics libra
ii libfontconfig1 2.8.0-2.1 generic font configuration library
ii libfreetype6 2.3.11-1 FreeType 2 font engine, shared lib
ii libgcc1 1:4.4.4-1 GCC support library
ii libglib2.0-0 2.24.1-1 The GLib library of C routines
ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user interface
ii libpango1.0-0 1.28.0-1 Layout and rendering of internatio
ii libpng12-0 1.2.43-1 PNG library - runtime
ii libstdc++6 4.4.4-1 The GNU Standard C++ Library v3
ii python 2.5.4-9 An interactive high-level object-o
ii python-cairo 1.8.8-1+b1 Python bindings for the Cairo vect
ii python-dateutil 1.4.1-3 powerful extensions to the standar
ii python-gobject 2.21.1-1 Python bindings for the GObject li
ii python-matplotlib-data 0.99.1.2-3 Python based plotting system (data
ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a fast array
ii python-pyparsing 1.5.2-2 Python parsing module
ii python-support 1.0.8 automated rebuilding support for P
ii python-tz 2010b-1 Python version of the Olson timezo
ii tcl8.5 8.5.8-2 Tcl (the Tool Command Language) v8
ii tk8.5 8.5.8-1 Tk toolkit for Tcl and X11, v8.5 -
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages python-matplotlib recommends:
ii python-glade2 2.17.0-2 GTK+ bindings: Glade support
ii python-tk 2.6.5-1 Tkinter - Writing Tk applications

Versions of packages python-matplotlib suggests:
ii dvipng 1.13-1 convert DVI files to PNG graphics
ii ipython 0.10-2 enhanced interactive Python shell
ii librsvg2-common 2.26.3-1 SAX-based renderer library for SVG
ii python-configobj 4.7.2+ds-1 simple but powerful config file re
pn python-excelerator<none> (no description available)
ii python-gtk2 2.17.0-2 Python bindings for the GTK+ widge
pn python-matplotlib-doc<none> (no description available)
pn python-qt3<none> (no description available)
ii python-qt4 4.7.3-1 Python bindings for Qt4
ii python-scipy 0.7.2-1 scientific tools for Python
ii python-traits 3.3.0-1 Manifest typing and reactive progr
ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform C++ GUI t
ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary programs
ii texlive-latex-extra 2009-7 TeX Live: LaTeX supplementary pack

-- no debconf information

_______________________________________________
Python-modules-team mailing list
Python-modules-team@...633...
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
     
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
   
--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

Hold off, actually. This patch seems to have broken some thing
inadvertently. Stay tuned…

Mike

···

matplotlib-devel@lists.sourceforge.net

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html

On Thu, Jun 10, 2010 at 16:52, Teemu
Ikonen wrote:


ThinkGeek and WIRED’s GeekDad team up for the Ultimate
GeekDad Father’s Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:


Matplotlib-devel mailing list
<tpikonen@…149…>
Package: python-matplotlib

Version: 0.99.1.2-3

Severity: important

Running a program which displays an image with plt.imshow() and changes
the

axes with plt.axis() before calling plt.show() crashes the python
interpreter:

$ python mpl_crash.py

terminate called after throwing an instance of ‘char const*’

Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

– System Information:

Debian Release: squeeze/sid

APT prefers testing

APT policy: (500, ‘testing’)

Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)

Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:

ii libatk1.0-0 1.30.0-1 The ATK accessibility
toolkit

ii libc6 2.10.2-9 Embedded GNU C Library:
Shared lib

ii libcairo2 1.8.10-4 The Cairo 2D vector
graphics libra

ii libfontconfig1 2.8.0-2.1 generic font configuration
library

ii libfreetype6 2.3.11-1 FreeType 2 font engine,
shared lib

ii libgcc1 1:4.4.4-1 GCC support library

ii libglib2.0-0 2.24.1-1 The GLib library of C
routines

ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user
interface

ii libpango1.0-0 1.28.0-1 Layout and rendering of
internatio

ii libpng12-0 1.2.43-1 PNG library - runtime

ii libstdc++6 4.4.4-1 The GNU Standard C++
Library v3

ii python 2.5.4-9 An interactive high-level
object-o

ii python-cairo 1.8.8-1+b1 Python bindings for the
Cairo vect

ii python-dateutil 1.4.1-3 powerful extensions to the
standar

ii python-gobject 2.21.1-1 Python bindings for the
GObject li

ii python-matplotlib-data 0.99.1.2-3 Python based plotting
system (data

ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a
fast array

ii python-pyparsing 1.5.2-2 Python parsing module

ii python-support 1.0.8 automated rebuilding
support for P

ii python-tz 2010b-1 Python version of the
Olson timezo

ii tcl8.5 8.5.8-2 Tcl (the Tool Command
Language) v8

ii tk8.5 8.5.8-1 Tk toolkit for Tcl and
X11, v8.5 -

ii zlib1g 1:1.2.3.4.dfsg-3 compression library -
runtime

Versions of packages python-matplotlib recommends:

ii python-glade2 2.17.0-2 GTK+ bindings: Glade
support

ii python-tk 2.6.5-1 Tkinter - Writing Tk
applications

Versions of packages python-matplotlib suggests:

ii dvipng 1.13-1 convert DVI files to PNG
graphics

ii ipython 0.10-2 enhanced interactive
Python shell

ii librsvg2-common 2.26.3-1 SAX-based renderer library
for SVG

ii python-configobj 4.7.2+ds-1 simple but powerful config
file re

pn python-excelerator (no description available)

ii python-gtk2 2.17.0-2 Python bindings for the
GTK+ widge

pn python-matplotlib-doc (no description available)

pn python-qt3 (no description available)

ii python-qt4 4.7.3-1 Python bindings for Qt4

ii python-scipy 0.7.2-1 scientific tools for
Python

ii python-traits 3.3.0-1 Manifest typing and
reactive progr

ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform
C++ GUI t

ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary
programs

ii texlive-latex-extra 2009-7 TeX Live: LaTeX
supplementary pack

– no debconf information


Python-modules-team mailing list

Python-modules-team@…633…
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

http://p.sf.net/sfu/thinkgeek-promo

Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

http://p.sf.net/sfu/thinkgeek-promo

Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
http://p.sf.net/sfu/thinkgeek-promo


Matplotlib-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-devel

-- Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

Ok. Attached is a corrected patch.

Mike

crash.diff (1.41 KB)

···

matplotlib-devel@lists.sourceforge.net

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html

On Thu, Jun 10, 2010 at 16:52, Teemu
Ikonen
wrote:

ThinkGeek and WIRED’s GeekDad team up for the Ultimate GeekDad Father’s Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win: _______________________________________________ Matplotlib-devel mailing list
<tpikonen@…149…>
Package: python-matplotlib

Version: 0.99.1.2-3

Severity: important

Running a program which displays an image with plt.imshow() and changes
the

axes with plt.axis() before calling plt.show() crashes the python
interpreter:

$ python mpl_crash.py

terminate called after throwing an instance of ‘char const*’

Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

– System Information:

Debian Release: squeeze/sid

APT prefers testing

APT policy: (500, ‘testing’)

Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)

Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:

ii libatk1.0-0 1.30.0-1 The ATK accessibility
toolkit

ii libc6 2.10.2-9 Embedded GNU C Library:
Shared lib

ii libcairo2 1.8.10-4 The Cairo 2D vector
graphics libra

ii libfontconfig1 2.8.0-2.1 generic font configuration
library

ii libfreetype6 2.3.11-1 FreeType 2 font engine,
shared lib

ii libgcc1 1:4.4.4-1 GCC support library

ii libglib2.0-0 2.24.1-1 The GLib library of C
routines

ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user
interface

ii libpango1.0-0 1.28.0-1 Layout and rendering of
internatio

ii libpng12-0 1.2.43-1 PNG library - runtime

ii libstdc++6 4.4.4-1 The GNU Standard C++
Library v3

ii python 2.5.4-9 An interactive high-level
object-o

ii python-cairo 1.8.8-1+b1 Python bindings for the
Cairo vect

ii python-dateutil 1.4.1-3 powerful extensions to the
standar

ii python-gobject 2.21.1-1 Python bindings for the
GObject li

ii python-matplotlib-data 0.99.1.2-3 Python based plotting
system (data

ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a
fast array

ii python-pyparsing 1.5.2-2 Python parsing module

ii python-support 1.0.8 automated rebuilding
support for P

ii python-tz 2010b-1 Python version of the
Olson timezo

ii tcl8.5 8.5.8-2 Tcl (the Tool Command
Language) v8

ii tk8.5 8.5.8-1 Tk toolkit for Tcl and
X11, v8.5 -

ii zlib1g 1:1.2.3.4.dfsg-3 compression library -
runtime

Versions of packages python-matplotlib recommends:

ii python-glade2 2.17.0-2 GTK+ bindings: Glade
support

ii python-tk 2.6.5-1 Tkinter - Writing Tk
applications

Versions of packages python-matplotlib suggests:

ii dvipng 1.13-1 convert DVI files to PNG
graphics

ii ipython 0.10-2 enhanced interactive
Python shell

ii librsvg2-common 2.26.3-1 SAX-based renderer library
for SVG

ii python-configobj 4.7.2+ds-1 simple but powerful config
file re

pn python-excelerator (no description available)

ii python-gtk2 2.17.0-2 Python bindings for the
GTK+ widge

pn python-matplotlib-doc (no description available)

pn python-qt3 (no description available)

ii python-qt4 4.7.3-1 Python bindings for Qt4

ii python-scipy 0.7.2-1 scientific tools for
Python

ii python-traits 3.3.0-1 Manifest typing and
reactive progr

ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform
C++ GUI t

ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary
programs

ii texlive-latex-extra 2009-7 TeX Live: LaTeX
supplementary pack

– no debconf information


Python-modules-team mailing list
Python-modules-team@…633…
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

http://p.sf.net/sfu/thinkgeek-promo

Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

http://p.sf.net/sfu/thinkgeek-promo

Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
http://p.sf.net/sfu/thinkgeek-promo


Matplotlib-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-devel

-- Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

http://p.sf.net/sfu/thinkgeek-promo


Matplotlib-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-devel

-- Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

SVN r8456 has a patch for the slowness Eric described when doing
extreme magnification on an image.

Unfortunately, this fix paves over the exception fixed earlier. Rather
than getting an exception when the magnification is too high, it now
silently just doesn’t draw the image. I’m trying to figure out what
the threshold is beyond which it fails in order to manually raise an
exception, but not having much luck. I suspect it’s somehow related to
floating-point or even Agg’s fixed-point rounding error.

Mike

···

matplotlib-devel@lists.sourceforge.net

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html

On Thu, Jun 10, 2010 at 16:52, Teemu
Ikonen
wrote:

ThinkGeek and WIRED’s GeekDad team up for the Ultimate GeekDad Father’s Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win: _______________________________________________ Matplotlib-devel mailing list
<tpikonen@…149…>
Package: python-matplotlib

Version: 0.99.1.2-3

Severity: important

Running a program which displays an image with plt.imshow() and changes
the

axes with plt.axis() before calling plt.show() crashes the python
interpreter:

$ python mpl_crash.py

terminate called after throwing an instance of ‘char const*’

Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

– System Information:

Debian Release: squeeze/sid

APT prefers testing

APT policy: (500, ‘testing’)

Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)

Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:

ii libatk1.0-0 1.30.0-1 The ATK accessibility
toolkit

ii libc6 2.10.2-9 Embedded GNU C Library:
Shared lib

ii libcairo2 1.8.10-4 The Cairo 2D vector
graphics libra

ii libfontconfig1 2.8.0-2.1 generic font configuration
library

ii libfreetype6 2.3.11-1 FreeType 2 font engine,
shared lib

ii libgcc1 1:4.4.4-1 GCC support library

ii libglib2.0-0 2.24.1-1 The GLib library of C
routines

ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user
interface

ii libpango1.0-0 1.28.0-1 Layout and rendering of
internatio

ii libpng12-0 1.2.43-1 PNG library - runtime

ii libstdc++6 4.4.4-1 The GNU Standard C++
Library v3

ii python 2.5.4-9 An interactive high-level
object-o

ii python-cairo 1.8.8-1+b1 Python bindings for the
Cairo vect

ii python-dateutil 1.4.1-3 powerful extensions to the
standar

ii python-gobject 2.21.1-1 Python bindings for the
GObject li

ii python-matplotlib-data 0.99.1.2-3 Python based plotting
system (data

ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a
fast array

ii python-pyparsing 1.5.2-2 Python parsing module

ii python-support 1.0.8 automated rebuilding
support for P

ii python-tz 2010b-1 Python version of the
Olson timezo

ii tcl8.5 8.5.8-2 Tcl (the Tool Command
Language) v8

ii tk8.5 8.5.8-1 Tk toolkit for Tcl and
X11, v8.5 -

ii zlib1g 1:1.2.3.4.dfsg-3 compression library -
runtime

Versions of packages python-matplotlib recommends:

ii python-glade2 2.17.0-2 GTK+ bindings: Glade
support

ii python-tk 2.6.5-1 Tkinter - Writing Tk
applications

Versions of packages python-matplotlib suggests:

ii dvipng 1.13-1 convert DVI files to PNG
graphics

ii ipython 0.10-2 enhanced interactive
Python shell

ii librsvg2-common 2.26.3-1 SAX-based renderer library
for SVG

ii python-configobj 4.7.2+ds-1 simple but powerful config
file re

pn python-excelerator (no description available)

ii python-gtk2 2.17.0-2 Python bindings for the
GTK+ widge

pn python-matplotlib-doc (no description available)

pn python-qt3 (no description available)

ii python-qt4 4.7.3-1 Python bindings for Qt4

ii python-scipy 0.7.2-1 scientific tools for
Python

ii python-traits 3.3.0-1 Manifest typing and
reactive progr

ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform
C++ GUI t

ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary
programs

ii texlive-latex-extra 2009-7 TeX Live: LaTeX
supplementary pack

– no debconf information


Python-modules-team mailing list
Python-modules-team@…633…
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

http://p.sf.net/sfu/thinkgeek-promo

Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

http://p.sf.net/sfu/thinkgeek-promo

Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
http://p.sf.net/sfu/thinkgeek-promo


Matplotlib-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-devel

-- Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

http://p.sf.net/sfu/thinkgeek-promo


Matplotlib-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-devel

-- Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

http://p.sf.net/sfu/thinkgeek-promo


Matplotlib-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-devel

-- Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

SVN r8456 has a patch for the slowness Eric described when doing extreme
magnification on an image.

Excellent!

Unfortunately, this fix paves over the exception fixed earlier. Rather
than getting an exception when the magnification is too high, it now
silently just doesn't draw the image. I'm trying to figure out what the
threshold is beyond which it fails in order to manually raise an
exception, but not having much luck. I suspect it's somehow related to
floating-point or even Agg's fixed-point rounding error.

"just doesn't draw" sounds like a pretty benign failure mode. It might even be better than raising an exception. An alternative might be to use something like "nonsingular()" to block attempts to make the view limits too small--once it is known how to calculate "too small". Yet another alternative, more complicated to implement, would be to clip the array and then interpolate to a finer grid at the python level when trying to zoom too far into a cell of the original grid.

It would be good if everything could be kept at the python or _image.cpp level, so that the Agg code could be left unchanged. As far as I know, your previous patch to raise the exception was the only mpl-specific change that has been made to the Agg24 code.

Eric

···

On 06/22/2010 10:11 AM, Michael Droettboom wrote:

Mike

On 06/22/2010 12:31 PM, Michael Droettboom wrote:

Ok. Attached is a corrected patch.

Mike

On 06/22/2010 12:26 PM, Michael Droettboom wrote:

Hold off, actually. This patch seems to have broken some thing
inadvertently. Stay tuned...

Mike

On 06/22/2010 12:05 PM, Michael Droettboom wrote:

In r8454, I have a applied a fix that allows this C++ exception to
correctly percolate to the Python side -- the user will still get an
exception, but it will be a Python exception and the interpreter
itself does not crash. (It used to work, but recent changes to CXX
caused it to break.) I have attached this patch to the e-mail.

As Eric suggests, fixing the underlying limitation (I even hesitate
to call it a bug because it is definitely a corner case) requires
understanding some pretty dark depths of the Agg renderer.

Mike

On 06/21/2010 10:57 PM, Eric Firing wrote:

On 06/21/2010 12:24 PM, Sandro Tosi wrote:

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro

Sandro,

Thanks for reporting it.

With the default interpolation, rendering gets extremely slow as the
view limits decline to and below a single image pixel. I suspect the
crash is related to this. Neither the slowdown nor the crash occurs
with interpolation='nearest', although there is still an anomaly in
which the image is blank when the viewlim region is too small.

Like Ryan, I am not familiar with the _image.cpp and the underlying
agg
routines, but I suspect this is going to be a difficult problem to
solve. It may be necessary to put in some workaround, trying to trap
and prevent the extreme slowdown and crash. The slowdown topic came up
on the list years ago.

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html

Eric

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen<tpikonen@...149...> >>>>>> wrote:

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and
changes the
axes with plt.axis() before calling plt.show() crashes the python
interpreter:

$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

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

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii libc6 2.10.2-9 Embedded GNU C Library: Shared lib
ii libcairo2 1.8.10-4 The Cairo 2D vector graphics libra
ii libfontconfig1 2.8.0-2.1 generic font configuration library
ii libfreetype6 2.3.11-1 FreeType 2 font engine, shared lib
ii libgcc1 1:4.4.4-1 GCC support library
ii libglib2.0-0 2.24.1-1 The GLib library of C routines
ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user interface
ii libpango1.0-0 1.28.0-1 Layout and rendering of internatio
ii libpng12-0 1.2.43-1 PNG library - runtime
ii libstdc++6 4.4.4-1 The GNU Standard C++ Library v3
ii python 2.5.4-9 An interactive high-level object-o
ii python-cairo 1.8.8-1+b1 Python bindings for the Cairo vect
ii python-dateutil 1.4.1-3 powerful extensions to the standar
ii python-gobject 2.21.1-1 Python bindings for the GObject li
ii python-matplotlib-data 0.99.1.2-3 Python based plotting system
(data
ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a fast array
ii python-pyparsing 1.5.2-2 Python parsing module
ii python-support 1.0.8 automated rebuilding support for P
ii python-tz 2010b-1 Python version of the Olson timezo
ii tcl8.5 8.5.8-2 Tcl (the Tool Command Language) v8
ii tk8.5 8.5.8-1 Tk toolkit for Tcl and X11, v8.5 -
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages python-matplotlib recommends:
ii python-glade2 2.17.0-2 GTK+ bindings: Glade support
ii python-tk 2.6.5-1 Tkinter - Writing Tk applications

Versions of packages python-matplotlib suggests:
ii dvipng 1.13-1 convert DVI files to PNG graphics
ii ipython 0.10-2 enhanced interactive Python shell
ii librsvg2-common 2.26.3-1 SAX-based renderer library for SVG
ii python-configobj 4.7.2+ds-1 simple but powerful config file re
pn python-excelerator<none> (no description available)
ii python-gtk2 2.17.0-2 Python bindings for the GTK+ widge
pn python-matplotlib-doc<none> (no description available)
pn python-qt3<none> (no description available)
ii python-qt4 4.7.3-1 Python bindings for Qt4
ii python-scipy 0.7.2-1 scientific tools for Python
ii python-traits 3.3.0-1 Manifest typing and reactive progr
ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform C++ GUI t
ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary programs
ii texlive-latex-extra 2009-7 TeX Live: LaTeX supplementary pack

-- no debconf information

_______________________________________________
Python-modules-team mailing list
Python-modules-team@...633...
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

------------------------------------------------------------------------------

ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

------------------------------------------------------------------------------

ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Unfortunately, this fix paves over the exception fixed earlier. Rather
than getting an exception when the magnification is too high, it now
silently just doesn't draw the image. I'm trying to figure out what the
threshold is beyond which it fails in order to manually raise an
exception, but not having much luck. I suspect it's somehow related to
floating-point or even Agg's fixed-point rounding error.
     

"just doesn't draw" sounds like a pretty benign failure mode. It might
even be better than raising an exception.

I was just imagining the frequent questions "my image disappears when I zoom in". I think it's preferable to have an exception (or at least a warning) saying something useful in that case.

  An alternative might be to
use something like "nonsingular()" to block attempts to make the view
limits too small--once it is known how to calculate "too small".

Yes. That's not a bad middle ground between raising an exception and doing nothing -- however this only applies to images, so nonsingular() or autoscale_view() etc. would have to become aware of when an image was on the axes. Not too difficult, I suppose.

   Yet
another alternative, more complicated to implement, would be to clip the
array and then interpolate to a finer grid at the python level when
trying to zoom too far into a cell of the original grid.
   

Yes, perhaps. But that means reimplementing all of the interpolation algorithms we currently use Agg for at the Python level, right? Doing a simple nearest neighbor interpolation in Python and then one of the more involved interpolation methods in Agg would not be equivalent. Such effort might be worth it in the long run to support non-regular grids, quadmeshes etc., however. But that's a major project and would probably need to be implemented in C/C++ anyway, just not necessarily based on Agg.

It would be good if everything could be kept at the python or _image.cpp
level, so that the Agg code could be left unchanged. As far as I know,
your previous patch to raise the exception was the only mpl-specific
change that has been made to the Agg24 code.
   

There are other changes that have been made over time to keep it compatible with newer versions of compilers. As the upstream of the non-GPL version of Agg is basically dead (and AFAICT the GPL'd version is too), we're maintaining such changes ourselves.

That said, the pulling of CXX classes into Agg is ugly, but it was the quickest solution (and one that will work for Debian as a basic patch against matplotlib 0.99.3). In the long run, the exception should be generic as far as Agg is concerned, and try/catch's need to be added around all calls into Agg from our Python wrappers.

Mike

···

On 06/22/2010 06:56 PM, Eric Firing wrote:

Eric

Mike

On 06/22/2010 12:31 PM, Michael Droettboom wrote:
     

Ok. Attached is a corrected patch.

Mike

On 06/22/2010 12:26 PM, Michael Droettboom wrote:
       

Hold off, actually. This patch seems to have broken some thing
inadvertently. Stay tuned...

Mike

On 06/22/2010 12:05 PM, Michael Droettboom wrote:
         

In r8454, I have a applied a fix that allows this C++ exception to
correctly percolate to the Python side -- the user will still get an
exception, but it will be a Python exception and the interpreter
itself does not crash. (It used to work, but recent changes to CXX
caused it to break.) I have attached this patch to the e-mail.

As Eric suggests, fixing the underlying limitation (I even hesitate
to call it a bug because it is definitely a corner case) requires
understanding some pretty dark depths of the Agg renderer.

Mike

On 06/21/2010 10:57 PM, Eric Firing wrote:
           

On 06/21/2010 12:24 PM, Sandro Tosi wrote:
             

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro
               

Sandro,

Thanks for reporting it.

With the default interpolation, rendering gets extremely slow as the
view limits decline to and below a single image pixel. I suspect the
crash is related to this. Neither the slowdown nor the crash occurs
with interpolation='nearest', although there is still an anomaly in
which the image is blank when the viewlim region is too small.

Like Ryan, I am not familiar with the _image.cpp and the underlying
agg
routines, but I suspect this is going to be a difficult problem to
solve. It may be necessary to put in some workaround, trying to trap
and prevent the extreme slowdown and crash. The slowdown topic came up
on the list years ago.

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html

Eric

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen<tpikonen@...149...> >>>>>>> wrote:
               

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and
changes the
axes with plt.axis() before calling plt.show() crashes the python
interpreter:

$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

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

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii libc6 2.10.2-9 Embedded GNU C Library: Shared lib
ii libcairo2 1.8.10-4 The Cairo 2D vector graphics libra
ii libfontconfig1 2.8.0-2.1 generic font configuration library
ii libfreetype6 2.3.11-1 FreeType 2 font engine, shared lib
ii libgcc1 1:4.4.4-1 GCC support library
ii libglib2.0-0 2.24.1-1 The GLib library of C routines
ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user interface
ii libpango1.0-0 1.28.0-1 Layout and rendering of internatio
ii libpng12-0 1.2.43-1 PNG library - runtime
ii libstdc++6 4.4.4-1 The GNU Standard C++ Library v3
ii python 2.5.4-9 An interactive high-level object-o
ii python-cairo 1.8.8-1+b1 Python bindings for the Cairo vect
ii python-dateutil 1.4.1-3 powerful extensions to the standar
ii python-gobject 2.21.1-1 Python bindings for the GObject li
ii python-matplotlib-data 0.99.1.2-3 Python based plotting system
(data
ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a fast array
ii python-pyparsing 1.5.2-2 Python parsing module
ii python-support 1.0.8 automated rebuilding support for P
ii python-tz 2010b-1 Python version of the Olson timezo
ii tcl8.5 8.5.8-2 Tcl (the Tool Command Language) v8
ii tk8.5 8.5.8-1 Tk toolkit for Tcl and X11, v8.5 -
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages python-matplotlib recommends:
ii python-glade2 2.17.0-2 GTK+ bindings: Glade support
ii python-tk 2.6.5-1 Tkinter - Writing Tk applications

Versions of packages python-matplotlib suggests:
ii dvipng 1.13-1 convert DVI files to PNG graphics
ii ipython 0.10-2 enhanced interactive Python shell
ii librsvg2-common 2.26.3-1 SAX-based renderer library for SVG
ii python-configobj 4.7.2+ds-1 simple but powerful config file re
pn python-excelerator<none> (no description available)
ii python-gtk2 2.17.0-2 Python bindings for the GTK+ widge
pn python-matplotlib-doc<none> (no description available)
pn python-qt3<none> (no description available)
ii python-qt4 4.7.3-1 Python bindings for Qt4
ii python-scipy 0.7.2-1 scientific tools for Python
ii python-traits 3.3.0-1 Manifest typing and reactive progr
ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform C++ GUI t
ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary programs
ii texlive-latex-extra 2009-7 TeX Live: LaTeX supplementary pack

-- no debconf information

_______________________________________________
Python-modules-team mailing list
Python-modules-team@...633...
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

------------------------------------------------------------------------------

ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
               

------------------------------------------------------------------------------

ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
             
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
     
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
   
--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

SVN r8457 has what I think is an ideal solution. Unbeknownst to me, the clipping I added to speed up rendering of highly magnified images was being done in integers. Agg does provide an option to do this in doubles, and using that seems to prevent the image from disappearing. It even renders the image with the very narrow range that nonsingular() currently enforces (+/- 0.001).

Mike

···

On 06/23/2010 08:37 AM, Michael Droettboom wrote:

On 06/22/2010 06:56 PM, Eric Firing wrote:
   

Unfortunately, this fix paves over the exception fixed earlier. Rather
than getting an exception when the magnification is too high, it now
silently just doesn't draw the image. I'm trying to figure out what the
threshold is beyond which it fails in order to manually raise an
exception, but not having much luck. I suspect it's somehow related to
floating-point or even Agg's fixed-point rounding error.

"just doesn't draw" sounds like a pretty benign failure mode. It might
even be better than raising an exception.
     

I was just imagining the frequent questions "my image disappears when I
zoom in". I think it's preferable to have an exception (or at least a
warning) saying something useful in that case.
   

   An alternative might be to
use something like "nonsingular()" to block attempts to make the view
limits too small--once it is known how to calculate "too small".
     

Yes. That's not a bad middle ground between raising an exception and
doing nothing -- however this only applies to images, so nonsingular()
or autoscale_view() etc. would have to become aware of when an image was
on the axes. Not too difficult, I suppose.
   

    Yet
another alternative, more complicated to implement, would be to clip the
array and then interpolate to a finer grid at the python level when
trying to zoom too far into a cell of the original grid.

Yes, perhaps. But that means reimplementing all of the interpolation
algorithms we currently use Agg for at the Python level, right? Doing a
simple nearest neighbor interpolation in Python and then one of the more
involved interpolation methods in Agg would not be equivalent. Such
effort might be worth it in the long run to support non-regular grids,
quadmeshes etc., however. But that's a major project and would probably
need to be implemented in C/C++ anyway, just not necessarily based on Agg.
   

It would be good if everything could be kept at the python or _image.cpp
level, so that the Agg code could be left unchanged. As far as I know,
your previous patch to raise the exception was the only mpl-specific
change that has been made to the Agg24 code.

There are other changes that have been made over time to keep it
compatible with newer versions of compilers. As the upstream of the
non-GPL version of Agg is basically dead (and AFAICT the GPL'd version
is too), we're maintaining such changes ourselves.

That said, the pulling of CXX classes into Agg is ugly, but it was the
quickest solution (and one that will work for Debian as a basic patch
against matplotlib 0.99.3). In the long run, the exception should be
generic as far as Agg is concerned, and try/catch's need to be added
around all calls into Agg from our Python wrappers.

Mike
   

Eric

Mike

On 06/22/2010 12:31 PM, Michael Droettboom wrote:

Ok. Attached is a corrected patch.

Mike

On 06/22/2010 12:26 PM, Michael Droettboom wrote:

Hold off, actually. This patch seems to have broken some thing
inadvertently. Stay tuned...

Mike

On 06/22/2010 12:05 PM, Michael Droettboom wrote:

In r8454, I have a applied a fix that allows this C++ exception to
correctly percolate to the Python side -- the user will still get an
exception, but it will be a Python exception and the interpreter
itself does not crash. (It used to work, but recent changes to CXX
caused it to break.) I have attached this patch to the e-mail.

As Eric suggests, fixing the underlying limitation (I even hesitate
to call it a bug because it is definitely a corner case) requires
understanding some pretty dark depths of the Agg renderer.

Mike

On 06/21/2010 10:57 PM, Eric Firing wrote:

On 06/21/2010 12:24 PM, Sandro Tosi wrote:

forwarded 585442 matplotlib-devel@lists.sourceforge.net
thanks

Hello Matplotlib developers,
here below is a report a user of maplotlib sent to the Debian bug
tracker. I've verified and it happend also with 0.99.3:

$ python -c "import matplotlib as p ; print p.__version__"
0.99.3
$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

Thanks for looking into it,
Sandro

Sandro,

Thanks for reporting it.

With the default interpolation, rendering gets extremely slow as the
view limits decline to and below a single image pixel. I suspect the
crash is related to this. Neither the slowdown nor the crash occurs
with interpolation='nearest', although there is still an anomaly in
which the image is blank when the viewlim region is too small.

Like Ryan, I am not familiar with the _image.cpp and the underlying
agg
routines, but I suspect this is going to be a difficult problem to
solve. It may be necessary to put in some workaround, trying to trap
and prevent the extreme slowdown and crash. The slowdown topic came up
on the list years ago.

http://www.mail-archive.com/matplotlib-devel@lists.sourceforge.net/msg00513.html

Eric

On Thu, Jun 10, 2010 at 16:52, Teemu Ikonen<tpikonen@...149...> >>>>>>>> wrote:

Package: python-matplotlib
Version: 0.99.1.2-3
Severity: important

Running a program which displays an image with plt.imshow() and
changes the
axes with plt.axis() before calling plt.show() crashes the python
interpreter:

$ python mpl_crash.py
terminate called after throwing an instance of 'char const*'
Aborted

This happens at least with Qt4Agg, GTKAgg and TKAgg backends.

The example program is attached.

Best,

Teemu

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

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-matplotlib depends on:
ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii libc6 2.10.2-9 Embedded GNU C Library: Shared lib
ii libcairo2 1.8.10-4 The Cairo 2D vector graphics libra
ii libfontconfig1 2.8.0-2.1 generic font configuration library
ii libfreetype6 2.3.11-1 FreeType 2 font engine, shared lib
ii libgcc1 1:4.4.4-1 GCC support library
ii libglib2.0-0 2.24.1-1 The GLib library of C routines
ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user interface
ii libpango1.0-0 1.28.0-1 Layout and rendering of internatio
ii libpng12-0 1.2.43-1 PNG library - runtime
ii libstdc++6 4.4.4-1 The GNU Standard C++ Library v3
ii python 2.5.4-9 An interactive high-level object-o
ii python-cairo 1.8.8-1+b1 Python bindings for the Cairo vect
ii python-dateutil 1.4.1-3 powerful extensions to the standar
ii python-gobject 2.21.1-1 Python bindings for the GObject li
ii python-matplotlib-data 0.99.1.2-3 Python based plotting system
(data
ii python-numpy 1:1.3.0-3+b1 Numerical Python adds a fast array
ii python-pyparsing 1.5.2-2 Python parsing module
ii python-support 1.0.8 automated rebuilding support for P
ii python-tz 2010b-1 Python version of the Olson timezo
ii tcl8.5 8.5.8-2 Tcl (the Tool Command Language) v8
ii tk8.5 8.5.8-1 Tk toolkit for Tcl and X11, v8.5 -
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages python-matplotlib recommends:
ii python-glade2 2.17.0-2 GTK+ bindings: Glade support
ii python-tk 2.6.5-1 Tkinter - Writing Tk applications

Versions of packages python-matplotlib suggests:
ii dvipng 1.13-1 convert DVI files to PNG graphics
ii ipython 0.10-2 enhanced interactive Python shell
ii librsvg2-common 2.26.3-1 SAX-based renderer library for SVG
ii python-configobj 4.7.2+ds-1 simple but powerful config file re
pn python-excelerator<none> (no description available)
ii python-gtk2 2.17.0-2 Python bindings for the GTK+ widge
pn python-matplotlib-doc<none> (no description available)
pn python-qt3<none> (no description available)
ii python-qt4 4.7.3-1 Python bindings for Qt4
ii python-scipy 0.7.2-1 scientific tools for Python
ii python-traits 3.3.0-1 Manifest typing and reactive progr
ii python-wxgtk2.8 2.8.10.1-3 wxWidgets Cross-platform C++ GUI t
ii texlive-extra-utils 2009-7 TeX Live: TeX auxiliary programs
ii texlive-latex-extra 2009-7 TeX Live: LaTeX supplementary pack

-- no debconf information

_______________________________________________
Python-modules-team mailing list
Python-modules-team@...633...
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

------------------------------------------------------------------------------

ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

------------------------------------------------------------------------------

ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo

_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA