Bug#1107787: paperwork: flaky autopkgtest on s390x: cannot convert float NaN to integer

Paul Gevers <[email protected]>
Newsgroups gmane.linux.debian.ports.s390
Message-ID <b11ac9ec-0a89-4d79-8caf-d5ab9497e48f__45933.975993988$1749922291$gmane$org@debian.org>
Source: paperwork
Version: 2.2.5-2
Severity: serious
User: [email protected]
Usertags: flaky
User: [email protected]
Usertags: s390x
X-Debbugs-CC: [email protected]

Dear maintainer(s),

I looked at the results of the autopkgtest of your package because it 
showed up as a regression for jq. I noticed that it regularly fails on 
s390x since March 2025 and it now fails more often than it passes.

I recall there was something special with NaN on s390x, but I can't find 
it. Maybe I'm mixing up with ppc64el which recently was on my radar 
because of another NaN bug.

Because the unstable-to-testing migration software now blocks on
regressions in testing, flaky tests, i.e. tests that flip between
passing and failing without changes to the list of installed packages,
are causing people unrelated to your package to spend time on these
tests.

Don't hesitate to reach out if you need help and some more information
from our infrastructure.

Paul

https://ci.debian.net/packages/p/paperwork/testing/s390x/61163824

386s =================================== FAILURES 
===================================
386s ________________________ TestPageExport.test_pdf_to_img 
________________________
386s
386s self = <tests.docexport.tests_export.TestPageExport 
testMethod=test_pdf_to_img>
386s
386s     def test_pdf_to_img(self):
386s         pipeline = [
386s             self.core.call_success("export_get_pipe_by_name", 
"img_boxes"),
386s             self.core.call_success("export_get_pipe_by_name", 
"unpaper"),
386s             self.core.call_success("export_get_pipe_by_name", 
"swt_soft"),
386s             self.core.call_success("export_get_pipe_by_name", "png"),
386s         ]
386s         result = None
386s
386s         def origin():
386s             return paperwork_backend.docexport.ExportData.build_page(
386s                 # 1st page of the PDF
386s                 "some_doc_id", self.test_doc_pdf_url, 0
386s             )
386s
386s         def set_result(r):
386s             nonlocal result
386s             result = r
386s
386s         promise = openpaperwork_core.promise.Promise(self.core, origin)
386s         for pipe in pipeline:
386s             promise = promise.then(pipe.get_promise(result='preview'))
386s         promise = promise.then(set_result)
386s         promise = promise.then(self.core.call_all, 
"mainloop_quit_graceful")
386s         promise = promise.schedule()
386s >       self.core.call_one("mainloop")
386s
386s tests/docexport/tests_export.py:118:
386s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _
386s /usr/lib/python3/dist-packages/openpaperwork_core/__init__.py:449: 
in call_one
386s     return callbacks[0][2](*args, **kwargs)
386s 
/usr/lib/python3/dist-packages/openpaperwork_gtk/mainloop/glib.py:79: in 
mainloop
386s     raise halt_cause
386s 
/usr/lib/python3/dist-packages/openpaperwork_gtk/mainloop/glib.py:160: 
in decorator
386s     func(*args, **kwargs)
386s /usr/lib/python3/dist-packages/openpaperwork_core/promise.py:80: in 
on_error
386s     t.on_error(exc, hide_caught_exceptions)
386s /usr/lib/python3/dist-packages/openpaperwork_core/promise.py:80: in 
on_error
386s     t.on_error(exc, hide_caught_exceptions)
386s /usr/lib/python3/dist-packages/openpaperwork_core/promise.py:108: 
in on_error
386s     raise exc
386s /usr/lib/python3/dist-packages/openpaperwork_core/promise.py:235: 
in _threaded_do
386s     our_r = self.func(*args, **self.kwargs)
386s 
/usr/lib/python3/dist-packages/paperwork_backend/docexport/img.py:141: 
in export
386s     for (doc_set, (doc, (page, img_boxes))) in list_img_boxes:
386s 
/usr/lib/python3/dist-packages/paperwork_backend/docexport/__init__.py:70: 
in iter
386s     for s in c.iter(dtype):
386s 
/usr/lib/python3/dist-packages/paperwork_backend/docexport/__init__.py:70: 
in iter
386s     for s in c.iter(dtype):
386s 
/usr/lib/python3/dist-packages/paperwork_backend/docexport/__init__.py:69: 
in iter
386s     for c in self.get_children():
386s 
/usr/lib/python3/dist-packages/paperwork_backend/docexport/__init__.py:231: 
in get_children
386s     for img_boxes in children:
386s 
/usr/lib/python3/dist-packages/paperwork_backend/docexport/__init__.py:231: 
in get_children
386s     for img_boxes in children:
386s 
/usr/lib/python3/dist-packages/paperwork_backend/docexport/img.py:50: in 
get_children
386s     boxes = self.core.call_success(
386s /usr/lib/python3/dist-packages/openpaperwork_core/__init__.py:498: 
in call_success
386s     r = callback(*args, **kwargs)
386s /usr/lib/python3/dist-packages/paperwork_backend/model/pdf.py:775: 
in page_get_boxes_by_url
386s     return self.core.call_one(
386s /usr/lib/python3/dist-packages/openpaperwork_core/__init__.py:449: 
in call_one
386s     return callbacks[0][2](*args, **kwargs)
386s 
/usr/lib/python3/dist-packages/openpaperwork_gtk/mainloop/glib.py:231: 
in mainloop_execute
386s     raise exc
386s 
/usr/lib/python3/dist-packages/openpaperwork_gtk/mainloop/glib.py:218: 
in get_result
386s     out = func(*args, **kwargs)
386s /usr/lib/python3/dist-packages/paperwork_backend/model/pdf.py:761: 
in _page_get_boxes_by_url
386s     word_box = PdfWordBox(word, word_rects)
386s /usr/lib/python3/dist-packages/paperwork_backend/model/pdf.py:41: 
in __init__
386s     self.position = minmax_rects(position)
386s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _
386s
386s rects = [<Poppler.Rectangle object at 0x3ff9039cdd0 
(PopplerRectangle at 0x3cfb5e0)>, <Poppler.Rectangle object at 
0x3ff9039ce...9039ce90 (PopplerRectangle at 0x3cfb620)>, 
<Poppler.Rectangle object at 0x3ff9039cef0 (PopplerRectangle at 0x3cfb640)>]
386s
386s     def minmax_rects(rects):
386s         (mx1, my1, mx2, my2) = (math.inf, math.inf, 0, 0)
386s         for rectangle in rects:
386s             ((x1, y1), (x2, y2)) = (
386s                 (int(rectangle.x1 * PDF_RENDER_FACTOR),
386s >                int(rectangle.y2 * PDF_RENDER_FACTOR)),
386s                 (int(rectangle.x2 * PDF_RENDER_FACTOR),
386s                  int(rectangle.y1 * PDF_RENDER_FACTOR))
386s             )
386s E           ValueError: cannot convert float NaN to integer
386s
386s /usr/lib/python3/dist-packages/paperwork_backend/model/pdf.py:24: 
ValueError
OpenPGP_signature.asc (application/pgp-signature, 585 B)
-----BEGIN PGP SIGNATURE-----

wsC7BAABCABvBYJoTbE4CRCcXJnrBb11CkcUAAAAAAAeACBzYWx0QG5vdGF0aW9u
cy5zZXF1b2lhLXBncC5vcmejPeeDE+15pjJSXakbEzTF+nb/hv7hgh65zchstHef
xBYhBFi2bUhza+k7BS3mcpxcmesFvXUKAACTnwgAj5z5asnwjK4U8Ydu3pOxCNN/
scRnpjjwpIJweo8dV4U7TvC9+HzSwsP41tveXiSFsDA9cxJkAZZLn3TT5raZCSku
PHwgrlAwgaLhjXefF8lT8iik+R1RfC2LoQmmZBXGa0sFRA9aZ8E4ocjeGvcC293A
6p2FTz+Y0AXNB7XGr4ofojYPlRF2bXnhU1YSC5qZPPMeWP9Q6zJ5G08Y5uNcnj9A
cATRH5H7IYds0bLUtE2whlngJ50tNFhGLPbV3Rez85WZpDn4mXKGz/8POFBrtxey
uWIGYkBsx1RaGtYPn8TXNHMo5wP3TVdVRuSRpi6MMps4QmCOyglM0LZx9JIEzw==
=BqlQ
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.