Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#7022 closed defect (fixed)

[with spkg, positive review] os x -- 10.6 -- generated the matplotlib font cache crashes sage

Reported by: was Owned by: was
Priority: blocker Milestone: sage-4.1.2
Component: graphics Keywords:
Cc: Merged in: Sage 4.1.2.rc0
Authors: William Stein Reviewers: Mike Hansen
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by was)

This is a huge problem and total blocker:

flat:.matplotlib wstein$ mv fontList.cache fontList.cache.XXX
flat:.matplotlib wstein$ cd
flat:~ wstein$ sage
----------------------------------------------------------------------
| Sage Version 4.1.1, Release Date: 2009-08-14                       |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
Loading Sage library. Current Mercurial branch is: parallel
sage: import pylab
/Users/wstein/sage/build/64bit/sage/local/bin/sage-sage: line 199: 58213 Abort trap              sage-ipython "$@" -i

flat:.matplotlib wstein$ mv fontList.cache.XXX fontList.cache
flat:.matplotlib wstein$ cd ..
flat:~ wstein$ sage
----------------------------------------------------------------------
| Sage Version 4.1.1, Release Date: 2009-08-14                       |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
Loading Sage library. Current Mercurial branch is: parallel
sage: import pylab
sage: 

Ideas for solution:

(1) track down exactly where the problem happens in the matplotlib/freetype(?) code and fix it.

(2) Just ship the font cache with Sage until this gets resolved upstream

A working version of the fontcache is here:

http://wstein.org/home/wstein/tmp/fontList.cache

Change History (16)

comment:1 Changed 5 years ago by was

  • Description modified (diff)

comment:2 Changed 5 years ago by was

  • Summary changed from os x -- 10.6 -- generated the matplotlib font cache crashes sage to [with patch; not yet ready for review] os x -- 10.6 -- generated the matplotlib font cache crashes sage

The spkg is here:

http://wstein.org/home/wstein/patches/matplotlib-0.99.1.p1.spkg

This supersedes what is at #6994.

The attached package *only* patches Matplotlib on OS X 10.6 by changing one line to use

comment:3 Changed 5 years ago by was

Doctesting reveals that just using FONTCONFIG is not enough, e.g., any saving to pdf still breaks.

Here is the problem narrowed down more:

sage: import ft2font; ft2font.FT2Font('/Library/Fonts/NISC18030.ttf')
/Users/wstein/sage/build/64bit/sage-4.1.2.alpha1/local/bin/sage-sage: line 199: 65960 Abort trap              sage-ipython "$@" -i

ft2font.so is a C extension in matplotlib.

comment:4 Changed 5 years ago by was

above it should be

sage: import matplotlib.ft2font; ft2font.FT2Font('/Library/Fonts/NISC18030.ttf')
/Users/wstein/sage/build/64bit/sage-4.1.2.alpha1/local/bin/sage-sage: line 199: 65960 Abort trap    

comment:5 Changed 5 years ago by was

How about

import matplotlib.ft2font; matplotlib.ft2font.FT2Font('/Library/Fonts/NISC18030.ttf')

comment:6 Changed 5 years ago by was

  • Summary changed from [with patch; not yet ready for review] os x -- 10.6 -- generated the matplotlib font cache crashes sage to [with patch; needs review] os x -- 10.6 -- generated the matplotlib font cache crashes sage

comment:7 Changed 5 years ago by was

  • Summary changed from [with patch; needs review] os x -- 10.6 -- generated the matplotlib font cache crashes sage to [with spkg; needs review] os x -- 10.6 -- generated the matplotlib font cache crashes sage

I found yet another issue (X11 must be in the PATH), but this spkg fixes that issue too:

http://wstein.org/home/wstein/patches/matplotlib-0.99.1.p1.spkg

comment:8 Changed 5 years ago by was

  • Summary changed from [with spkg; needs review] os x -- 10.6 -- generated the matplotlib font cache crashes sage to [with spkg; needs work] os x -- 10.6 -- generated the matplotlib font cache crashes sage

OK, even this doesn't fix the problem on all machines. E.g., on bsd.math.washington.edu it does not fix the problem.

comment:9 Changed 5 years ago by was

Comment -- upgrading freetype doesn't fix the problems at all. Also, upgrading freetype is itself broken, and the only workaround that I found that worked was to alias "rm" to be "rm -f" -- then freetype built and installed fine.

comment:11 Changed 5 years ago by was

  • Summary changed from [with spkg; needs work] os x -- 10.6 -- generated the matplotlib font cache crashes sage to [with spkg; needs review] os x -- 10.6 -- generated the matplotlib font cache crashes sage

This spkg fixes the problems on all my test systems:

http://sage.math.washington.edu/home/wstein/patches/matplotlib-0.99.1.p2.spkg

All it does is take the plane vanilla matplotlib-0.99.1.spkg spkg and add a little script that simply rebuilds f2font.so again using *exactly* the same command lines used by distutils to build that extension. That's it. For some reason -- probably involving environment variables (?) -- this fixes the problem. I consider this a temporary 1-sage release solution until the matplotlib developers (or me) come up with a real fix.

comment:12 Changed 5 years ago by was

By the way, here is a simple test that things are working:

sage: import pylab
sage: plot(sin).save('a.pdf')

comment:13 Changed 5 years ago by mhansen

  • Summary changed from [with spkg; needs review] os x -- 10.6 -- generated the matplotlib font cache crashes sage to [with spkg; positive review] os x -- 10.6 -- generated the matplotlib font cache crashes sage

Looks good to me. Everything worked for me on bsd.

comment:14 Changed 5 years ago by mvngu

  • Authors set to William Stein
  • Merged in set to Sage 4.1.2.rc0
  • Resolution set to fixed
  • Reviewers set to Mike Hansen
  • Status changed from new to closed
  • Summary changed from [with spkg; positive review] os x -- 10.6 -- generated the matplotlib font cache crashes sage to [with spkg, positive review] os x -- 10.6 -- generated the matplotlib font cache crashes sage

Merged matplotlib-0.99.1.p2.spkg in the standard packages repository.

comment:15 Changed 5 years ago by jhpalmieri

  • Report Upstream set to N/A

I'm still getting a crash with lines like these:

sage: import pylab
sage: plot(sin).save('a.pdf')

I made a related comment at #7095 because I didn't know about this ticket. Also, as opposed to this ticket, #7095 is still open, so further discussion should continue there (or on a new ticket?).

comment:16 Changed 5 years ago by jhpalmieri

The matplotlib problem may be in its spkg file: it says

if [ $UNAME = "Darwin" -a `uname -r` = "10.0.0" ]; then
    echo "Running a horrible hack to force ft2font.so to build in a way that doen't crash."
    echo "This is of course temporary.  See http://trac.sagemath.org/sage_trac/ticket/7022"
    ../patches/osx10.6hack
fi

But with my computer, "uname -r" returns "10.2.0", not "10.0.0". How do you modify a shell script like this to make it work for a range of version numbers? (We don't just want "10.0.0" or "10.2.0", I'm guessing.)

Note: See TracTickets for help on using tickets.