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<tpiko...@gmail.com>
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-t...@lists.alioth.debian.org
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
Index: agg24/include/agg_rasterizer_cells_aa.h
===================================================================
--- agg24/include/agg_rasterizer_cells_aa.h (revision 8453)
+++ agg24/include/agg_rasterizer_cells_aa.h (working copy)
@@ -29,16 +29,15 @@
#ifndef AGG_RASTERIZER_CELLS_AA_INCLUDED
#define AGG_RASTERIZER_CELLS_AA_INCLUDED
+#include "CXX/Exception.hxx"
#include <exception>
#include <string.h>
#include <math.h>
#include "agg_math.h"
#include "agg_array.h"
-
namespace agg
{
-
//-----------------------------------------------------rasterizer_cells_aa
// An internal class that implements the main rasterization algorithm.
// Used in the rasterizer. Should not be used direcly.
@@ -185,10 +184,13 @@
if((m_num_cells & cell_block_mask) == 0)
{
if(m_num_blocks >= cell_block_limit) {
+ static Py::Exception e(
+ Py::OverflowError(
+ "Agg rendering complexity exceeded. Consider downsampling or decimating your data."));
+
/* If this exception is thrown too often, one can
increase cell_block_limit */
- throw "Agg rendering complexity exceeded. "
- "Consider downsampling or decimating your data.";
+ throw e;
}
allocate_block();
}
------------------------------------------------------------------------------
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