Opened 4 months ago

Closed 4 months ago

#69182 closed defect (fixed)

texlive-bin: PANIC: unprotected error in call to Lua API (zlib library version does not match - header: 1.3, library: 1.3.1)

Reported by: MarieVdS (Marie Van de Sande) Owned by: drkp (Dan Ports)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: eric-j-ason
Port: texlive-bin

Description

I am on MacOS Sanoma. When trying to install texlive-fonts-extra, the log flags the following issue:

:info:activate PANIC: unprotected error in call to Lua API (zlib library version does not match - header: 1.3, library: 1.3.1)

This was already flagged by matplotlib. When trying to plot something, it tells me

PANIC: unprotected error in call to Lua API (zlib library version does not match - header: 1.3, library: 1.3.1)

followed by the error:

Traceback (most recent call last):
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backend_bases.py", line 1226, in _on_timer
    ret = func(*args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_macosx.py", line 68, in callback_func
    callback()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_macosx.py", line 88, in _draw_idle
    self.draw()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_macosx.py", line 50, in draw
    super().draw()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py", line 400, in draw
    self.figure.draw(self.renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/artist.py", line 95, in draw_wrapper
    result = draw(artist, renderer, *args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/figure.py", line 3175, in draw
    mimage._draw_list_compositing_images(
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/image.py", line 131, in _draw_list_compositing_images
    a.draw(renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/axes/_base.py", line 3064, in draw
    mimage._draw_list_compositing_images(
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/image.py", line 131, in _draw_list_compositing_images
    a.draw(renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/axis.py", line 1389, in draw
    tlb1, tlb2 = self._get_ticklabel_bboxes(ticks_to_draw, renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/axis.py", line 1316, in _get_ticklabel_bboxes
    return ([tick.label1.get_window_extent(renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/axis.py", line 1316, in <listcomp>
    return ([tick.label1.get_window_extent(renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/text.py", line 959, in get_window_extent
    bbox, info, descent = self._get_layout(self._renderer)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/text.py", line 378, in _get_layout
    _, lp_h, lp_d = _get_text_metrics_with_cache(
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/text.py", line 97, in _get_text_metrics_with_cache
    return _get_text_metrics_with_cache_impl(
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/text.py", line 105, in _get_text_metrics_with_cache_impl
    return renderer_ref().get_text_width_height_descent(text, fontprop, ismath)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py", line 226, in get_text_width_height_descent
    return super().get_text_width_height_descent(s, prop, ismath)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backend_bases.py", line 645, in get_text_width_height_descent
    return self.get_texmanager().get_text_width_height_descent(
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/texmanager.py", line 371, in get_text_width_height_descent
    page, = dvi
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/dviread.py", line 296, in __iter__
    while self._read():
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/dviread.py", line 375, in _read
    self._dtable[byte](self, byte)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/dviread.py", line 227, in wrapper
    return method(self, *[f(self, byte-min) for f in get_args])
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/dviread.py", line 526, in _fnt_def
    self._fnt_def_real(k, c, s, d, a, l)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/dviread.py", line 531, in _fnt_def_real
    tfm = _tfmfile(fontname)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/dviread.py", line 1132, in _fontfile
    return cls(_find_tex_file(texname + suffix))
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/dviread.py", line 1110, in _find_tex_file
    raise FileNotFoundError(
FileNotFoundError: Matplotlib's TeX implementation searched for a file named 'cmss10.tfm' in your texmf tree, but could not find it

Change History (10)

comment:1 Changed 4 months ago by ryandesign (Ryan Carsten Schmidt)

Owner: set to drkp
Port: texlive-luatex added; zlib removed
Priority: HighNormal
Status: newassigned
Summary: zlib 1.3.1 not compatible with Lua API (errors in texlive and matplotlib)texlive-luatex: PANIC: unprotected error in call to Lua API (zlib library version does not match - header: 1.3, library: 1.3.1)

The problem has nothing to do with the zlib port. The zlib port was merely recently updated from 1.3 to 1.3.1. That's a normal thing to do.

Looks like the message is coming from texlive-luatex:

% strings /opt/local/bin/optex | grep zlib.library.version
zlib library version does not match - header: %s, library: %s
% port provides /opt/local/bin/optex
/opt/local/bin/optex is provided by: texlive-luatex

It's being overly cautious and is reporting that it was built with the zlib 1.3 header but the version of the zlib library is now 1.3.1. This is not a problem but for some reason texlive-luatex thinks it is.

The solution is to fix texlive-luatex so that it does not consider this to be a problem and increase its revision to rebuild it. If that's not possible or desirable for some reason, the solution is just to increase its revision to rebuild it, and add a comment to the zlib port to remind its maintainer to do so every time zlib is updated to a new version.

I'm not sure whether the matplotlib FileNotFoundError you reported is caused by the texlive-luatex issue or is separate.

comment:2 Changed 4 months ago by jmroot (Joshua Root)

This has happened before BTW: #67998

comment:3 Changed 4 months ago by ryandesign (Ryan Carsten Schmidt)

Of course: it would happen anytime the zlib port is updated.

The bug was reported to luatex in 2012 along with a patch to remove the zlib version check:

https://mailman.ntg.nl/archives/list/dev-luatex@ntg.nl/message/VXCOGVXOHBWMNCCBQCGNIUIHOBTVHSHN/

comment:4 Changed 4 months ago by ryandesign (Ryan Carsten Schmidt)

We could at least apply this upstream patch to relax the check:

https://github.com/TeX-Live/texlive-source/commit/7fb47babef2c947ad937d9e8e36842122459342c

comment:5 Changed 4 months ago by MarieVdS (Marie Van de Sande)

Thank you for your reply! The matplotlib error has the same origin - luatex being too cautious.

Can I apply this luatex patch myself or does the texlive distribution need to be upgraded first? Although I apparently rely heavily on this for work, I am unsure on how to apply such a patch and rebuild the package myself.

comment:6 Changed 4 months ago by eric-j-ason

Cc: eric-j-ason added

comment:7 Changed 4 months ago by ryandesign (Ryan Carsten Schmidt)

Port: texlive-bin added; texlive-luatex removed
Summary: texlive-luatex: PANIC: unprotected error in call to Lua API (zlib library version does not match - header: 1.3, library: 1.3.1)texlive-bin: PANIC: unprotected error in call to Lua API (zlib library version does not match - header: 1.3, library: 1.3.1)

Has duplicates #69183, #69184, #69185.

I forgot about all the symlinks in texlive; the port that provides the real binary is texlive-bin.

You can apply patches to ports manually; the MacPorts documentation shows how. Let's wait a moment for Dan to react to this ticket. If he does not respond for 72 hours we can add the patch without his input.

comment:8 Changed 4 months ago by drkp (Dan Ports)

Status: assignedaccepted

I thought we already fixed this; will apply the patch shortly.

comment:9 Changed 4 months ago by drkp (Dan Ports)

In fact, let's just go ahead and remove this version check entirely.

comment:10 Changed 4 months ago by drkp (Dan Ports)

Resolution: fixed
Status: acceptedclosed

In e54eb442c699fe5bdb1ae7c17f6cca55e0503695/macports-ports (master):

texlive-bin: remove luatex's unnecessary zlib version check

This check is overly strict and has caused problems more than once on
zlib version upgrades that are otherwise perfectly compatible.

Closes: #69182

Note: See TracTickets for help on using tickets.