Issue 1:
The following code:

import matplotlib.pyplot as plt
plt.annotate('X', (0, float('nan')))
plt.tight_layout()
plt.savefig('crash.png')

raises an exception when using matplotlib 3, including 3.0.1.

It works fine with matplotlib 2.

/tmp/mpl3/lib/python3.7/site-packages/numpy/core/fromnumeric.py:83: RuntimeWarning: invalid value encountered in reduce
return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
/tmp/mpl3/lib/python3.7/site-packages/numpy/core/_methods.py:32: RuntimeWarning: invalid value encountered in reduce
return umr_minimum(a, axis, None, out, keepdims, initial)
/tmp/mpl3/lib/python3.7/site-packages/numpy/core/_methods.py:28: RuntimeWarning: invalid value encountered in reduce
return umr_maximum(a, axis, None, out, keepdims, initial)
Traceback (most recent call last):
File "mplbug.py", line 5, in <module>
plt.savefig('crash.png')
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/pyplot.py", line 689, in savefig
res = fig.savefig(*args, **kwargs)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/figure.py", line 2094, in savefig
self.canvas.print_figure(fname, **kwargs)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/backends/backend_qt5agg.py", line 88, in print_figure
super().print_figure(*args, **kwargs)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2075, in print_figure
**kwargs)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py", line 510, in print_png
FigureCanvasAgg.draw(self)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py", line 402, in draw
self.figure.draw(self.renderer)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/artist.py", line 50, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/figure.py", line 1649, in draw
renderer, self, artists, self.suppressComposite)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/image.py", line 138, in _draw_list_compositing_images
a.draw(renderer)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/artist.py", line 50, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/axes/_base.py", line 2610, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/image.py", line 138, in _draw_list_compositing_images
a.draw(renderer)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/artist.py", line 50, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/axis.py", line 1185, in draw
ticks_to_draw = self._update_ticks(renderer)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/axis.py", line 1023, in _update_ticks
tick_tups = list(self.iter_ticks()) # iter_ticks calls the locator
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/axis.py", line 967, in iter_ticks
majorLocs = self.major.locator()
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/ticker.py", line 1985, in __call__
return self.tick_values(vmin, vmax)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/ticker.py", line 1993, in tick_values
locs = self._raw_ticks(vmin, vmax)
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/ticker.py", line 1932, in _raw_ticks
nbins = np.clip(self.axis.get_tick_space(),
File "/tmp/mpl3/lib/python3.7/site-packages/matplotlib/axis.py", line 2159, in get_tick_space
return int(np.floor(length / size))
ValueError: cannot convert float NaN to integer

Based on the traceback, the following issues might be related:

#10360 (likely this is a duplicate)

#11386

#6789

The snippet has been tested on brand new conda environments with the defaults

channel.

Matplotlib 3 env

$ conda create -p /tmp/mpl3 matplotlib=3 --yes
Solving environment: done

## Package Plan ##

environment location: /tmp/mpl3

added / updated specs:
- matplotlib=3

The following packages will be downloaded:

package | build
---------------------------|-----------------
matplotlib-3.0.1 | py37h5429711_0 6.6 MB

The following NEW packages will be INSTALLED:

blas: 1.0-mkl
ca-certificates: 2018.03.07-0
certifi: 2018.10.15-py37_0
cycler: 0.10.0-py37_0
dbus: 1.13.2-h714fa37_1
expat: 2.2.6-he6710b0_0
fontconfig: 2.13.0-h9420a91_0
freetype: 2.9.1-h8a8886c_1
glib: 2.56.2-hd408876_0
gst-plugins-base: 1.14.0-hbbd80ab_1
gstreamer: 1.14.0-hb453b48_1
icu: 58.2-h9c2bf20_1
intel-openmp: 2019.0-118
jpeg: 9b-h024ee3a_2
kiwisolver: 1.0.1-py37hf484d3e_0
libedit: 3.1.20170329-h6b74fdf_2
libffi: 3.2.1-hd88cf55_4
libgcc-ng: 8.2.0-hdf63c60_1
libgfortran-ng: 7.3.0-hdf63c60_0
libpng: 1.6.35-hbc83047_0
libstdcxx-ng: 8.2.0-hdf63c60_1
libuuid: 1.0.3-h1bed415_2
libxcb: 1.13-h1bed415_1
libxml2: 2.9.8-h26e45fe_1
matplotlib: 3.0.1-py37h5429711_0
mkl: 2019.0-118
mkl_fft: 1.0.6-py37h7dd41cf_0
mkl_random: 1.0.1-py37h4414c95_1
ncurses: 6.1-hf484d3e_0
numpy: 1.15.3-py37h1d66e8a_0
numpy-base: 1.15.3-py37h81de0dd_0
openssl: 1.0.2p-h14c3975_0
pcre: 8.42-h439df22_0
pip: 10.0.1-py37_0
pyparsing: 2.2.2-py37_0
pyqt: 5.9.2-py37h05f1152_2
python: 3.7.0-h6e4f718_3
python-dateutil: 2.7.3-py37_0
pytz: 2018.5-py37_0
qt: 5.9.6-h8703b6f_2
readline: 7.0-h7b6447c_5
setuptools: 40.4.3-py37_0
sip: 4.19.8-py37hf484d3e_0
six: 1.11.0-py37_1
sqlite: 3.25.2-h7b6447c_0
tk: 8.6.8-hbc83047_0
tornado: 5.1.1-py37h7b6447c_0
wheel: 0.32.2-py37_0
xz: 5.2.4-h14c3975_4
zlib: 1.2.11-ha838bed_2

Downloading and Extracting Packages
matplotlib-3.0.1 | 6.6 MB | ########################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate /tmp/mpl3
#
# To deactivate an active environment, use
#
# $ conda deactivate

Matplotlib 2 conda environment

$ conda create -p /tmp/mpl2 matplotlib=2 --yes (/tmp/mpl3)
Solving environment: done

## Package Plan ##

environment location: /tmp/mpl2

added / updated specs:
- matplotlib=2

The following NEW packages will be INSTALLED:

blas: 1.0-mkl
ca-certificates: 2018.03.07-0
certifi: 2018.10.15-py37_0
cycler: 0.10.0-py37_0
dbus: 1.13.2-h714fa37_1
expat: 2.2.6-he6710b0_0
fontconfig: 2.13.0-h9420a91_0
freetype: 2.9.1-h8a8886c_1
glib: 2.56.2-hd408876_0
gst-plugins-base: 1.14.0-hbbd80ab_1
gstreamer: 1.14.0-hb453b48_1
icu: 58.2-h9c2bf20_1
intel-openmp: 2019.0-118
jpeg: 9b-h024ee3a_2
kiwisolver: 1.0.1-py37hf484d3e_0
libedit: 3.1.20170329-h6b74fdf_2
libffi: 3.2.1-hd88cf55_4
libgcc-ng: 8.2.0-hdf63c60_1
libgfortran-ng: 7.3.0-hdf63c60_0
libpng: 1.6.35-hbc83047_0
libstdcxx-ng: 8.2.0-hdf63c60_1
libuuid: 1.0.3-h1bed415_2
libxcb: 1.13-h1bed415_1
libxml2: 2.9.8-h26e45fe_1
matplotlib: 2.2.3-py37hb69df0a_0
mkl: 2019.0-118
mkl_fft: 1.0.6-py37h7dd41cf_0
mkl_random: 1.0.1-py37h4414c95_1
ncurses: 6.1-hf484d3e_0
numpy: 1.15.3-py37h1d66e8a_0
numpy-base: 1.15.3-py37h81de0dd_0
openssl: 1.0.2p-h14c3975_0
pcre: 8.42-h439df22_0
pip: 10.0.1-py37_0
pyparsing: 2.2.2-py37_0
pyqt: 5.9.2-py37h05f1152_2
python: 3.7.0-h6e4f718_3
python-dateutil: 2.7.3-py37_0
pytz: 2018.5-py37_0
qt: 5.9.6-h8703b6f_2
readline: 7.0-h7b6447c_5
setuptools: 40.4.3-py37_0
sip: 4.19.8-py37hf484d3e_0
six: 1.11.0-py37_1
sqlite: 3.25.2-h7b6447c_0
tk: 8.6.8-hbc83047_0
tornado: 5.1.1-py37h7b6447c_0
wheel: 0.32.2-py37_0
xz: 5.2.4-h14c3975_4
zlib: 1.2.11-ha838bed_2

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate /tmp/mpl2
#
# To deactivate an active environment, use
#
# $ conda deactivate

The issue has been encountered in real code that expects MPL to deal with nan

values properly.

Issue 2:
Over in scikit-image we're having some trouble with our Travis build, and it appears to be due to the matplotlib optional backend package check for Qt4 entering a subprocess and never returning under the Travis system Python (3.2.3). This results in an eventual Travis timeout.

See the bottom of this build log: https://travis-ci.org/JDWarner/scikit-image/jobs/34035472

The reason this happens is unclear and it would be ideal if this worked (as PyQt4 is present in that 3.2 build), but the real problem is that this can completely tank a CI build or install. Ergo, we recommend a timeout (perhaps ~15 seconds) for checking [optional] build packages.