Subject: bug#62766: (guix status) crashes with numerical-overflow

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 10 Apr 2023 22:04:24 -0400

Hi,

[...]

> Backtrace:
> In ice-9/boot-9.scm:
>     724:2 19 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
> In ice-9/eval.scm:
>     619:8 18 (_ #(#(#<directory (guile-user) 7f6277c6fc80>)))
> In guix/ui.scm:
>    2300:7 17 (run-guix . _)
>   2263:10 16 (run-guix-command _ . _)
> In ice-9/boot-9.scm:
>   1752:10 15 (with-exception-handler _ _ #:unwind? _ # _)
> In guix/status.scm:
>     830:4 14 (call-with-status-report _ _)
> In ice-9/boot-9.scm:
>   1752:10 13 (with-exception-handler _ _ #:unwind? _ # _)
> In guix/store.scm:
>    659:37 12 (thunk)
>    1298:8 11 (call-with-build-handler _ _)
>    1298:8 10 (call-with-build-handler #<procedure 7f6275920750 at g…> …)
> In guix/scripts/build.scm:
>    802:27  9 (_)
> In guix/store.scm:
>   1417:15  8 (_ #<store-connection 256.99 7f6277c05dc0> _ _)
>    737:14  7 (process-stderr _ _)
> In unknown file:
>            6 (display "@ build-log 9251 316\n-0.8.1/tests/packages/…" …)
> In guix/status.scm:
>    770:20  5 (write! _ _ _)
> In srfi/srfi-1.scm:
>    460:18  4 (fold #<procedure 7f6277ce81c0 at guix/status.scm:659:…> …)
> In guix/status.scm:
>    660:15  3 (_ (build-log 9251 "[0/0] ") #<<build-status> building:…>)
>    195:29  2 (update-build #<<build-status> building: (#<<build> de…> …)
> In ice-9/boot-9.scm:
>   1685:16  1 (raise-exception _ #:continuable? _)
>   1685:16  0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> Throw to key `numerical-overflow' with args `("divide" "Numerical overflow" #f #f)'.

The /var/log/guix-daemon.log file contains for this session:

--8<---------------cut here---------------start------------->8---
2023-04-10 21:59:47 accepted connection from pid 26313, user mcournoyer
2023-04-10 21:59:48 accepted connection from pid 26332, user mcournoyer
2023-04-10 21:59:48 accepted connection from pid 26352, user mcournoyer
2023-04-10 22:00:02 SIGPOLL
2023-04-10 22:00:02 unexpected build daemon error: interrupted by the user
--8<---------------cut here---------------end--------------->8---

It seems to fail reliably attempting to build meson-python, on the current
core-updates branch:

--8<---------------cut here---------------start------------->8---
starting phase `check'
============================= test session starts ==============================
platform linux -- Python 3.10.7, pytest-7.1.3, pluggy-0.13.1 -- /gnu/store/82nin1sk01l31p5vpnz9c2ki76qka9b0-python-wrapper-3.10.7/bin/python
cachedir: .pytest_cache
hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/.hypothesis/examples')
rootdir: /tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1, configfile: setup.cfg
plugins: hypothesis-6.54.5, mock-3.8.2
collecting ... collected 47 items / 8 deselected / 39 selected

tests/test_output.py::test_colors[False-env0-False] PASSED               [  2%]
tests/test_output.py::test_colors[True-env1-True] PASSED                 [  5%]
tests/test_output.py::test_colors[False-env2-False] PASSED               [  7%]
tests/test_output.py::test_colors[True-env3-False] PASSED                [ 10%]
tests/test_output.py::test_colors[False-env4-True] PASSED                [ 12%]
tests/test_output.py::test_colors[True-env5-True] PASSED                 [ 15%]
tests/test_output.py::test_colors_conflict PASSED                        [ 17%]
tests/test_pep517.py::test_get_requires_for_build_wheel[pure-True-expected0] PASSED [ 20%]
tests/test_pep517.py::test_get_requires_for_build_wheel[library-True-expected1] PASSED [ 23%]
tests/test_pep517.py::test_get_requires_for_build_wheel[pure-False-expected2] PASSED [ 25%]
tests/test_pep517.py::test_get_requires_for_build_wheel[library-False-expected3] PASSED [ 28%]
tests/test_project.py::test_name[library] PASSED                         [ 30%]
tests/test_project.py::test_name[library-pep621] PASSED                  [ 33%]
tests/test_project.py::test_version[library] PASSED                      [ 35%]
tests/test_project.py::test_version[library-pep621] PASSED               [ 38%]
tests/test_project.py::test_unsupported_dynamic PASSED                   [ 41%]
tests/test_project.py::test_unsupported_python_version PASSED            [ 43%]
tests/test_tags.py::test_stable_abi_tag[abi3-3-abi3-None] PASSED         [ 46%]
tests/test_tags.py::test_stable_abi_tag[abi4-4-abi4-None] PASSED         [ 48%]
tests/test_tags.py::test_stable_abi_tag_invalid PASSED                   [ 51%]
tests/test_tags.py::test_linux_interpreter_tag[cpython-37-x86_64-linux-gnu-cpython-37-additional0-cp37-cp37] PASSED [ 53%]
tests/test_tags.py::test_linux_interpreter_tag[cpython-310-x86_64-linux-gnu-cpython-310-additional1-cp310-cp310] PASSED [ 56%]
tests/test_tags.py::test_linux_interpreter_tag[cpython-310-cpython-310-additional2-cp310-cp310] PASSED [ 58%]
tests/test_tags.py::test_linux_interpreter_tag[cpython-310-special-cpython-310-additional3-cp310-cp310] PASSED [ 61%]
tests/test_tags.py::test_linux_interpreter_tag[pypy-41-pypy-41-additional4-pypy_41-pp310] PASSED [ 64%]
tests/test_tags.py::test_linux_interpreter_tag[pypy3-72-x86_64-linux-gnu-pypy3-72-additional5-pypy3_72-pp310] PASSED [ 66%]
tests/test_tags.py::test_linux_interpreter_tag[cpython-310-x86_64-linux-gnu-cpython-310-additional6-cp310-cp310] PASSED [ 69%]
tests/test_tags.py::test_linux_interpreter_tag_invalid[-Invalid PEP 3149 interpreter tag, expected at least 2 parts but got 1] PASSED [ 71%]
tests/test_tags.py::test_linux_interpreter_tag_invalid[invalid-Invalid PEP 3149 interpreter tag, expected at least 2 parts but got 1] PASSED [ 74%]
tests/test_tags.py::test_windows_interpreter_tag[cp310-win_amd64-parts0-cp310-cp310] PASSED [ 76%]
tests/test_tags.py::test_windows_interpreter_tag[cp38-win32-parts1-cp38-cp38] PASSED [ 79%]
tests/test_tags.py::test_windows_interpreter_tag_warn[] PASSED           [ 82%]
tests/test_tags.py::test_windows_interpreter_tag_warn[unknown] PASSED    [ 84%]
tests/test_tags.py::test_windows_interpreter_tag_warn[too-much-information] PASSED [ 87%]
tests/test_wheel.py::test_purelib_and_platlib XPASS (Meson bug)          [ 89%]
tests/test_wheel.py::test_pure PASSED                                    [ 92%]
tests/test_wheel.py::test_configure_data FAILED                          [ 94%]
tests/test_wheel.py::test_interpreter_abi_tag XPASS (Meson bug)          [ 97%]
tests/test_wheel.py::test_local_lib PASSED                               [100%]

=================================== FAILURES ===================================
_____________________________ test_configure_data ______________________________

wheel_configure_data = PosixPath('/tmp/guix-build-meson-python-0.8.1.drv-0/pytest-of-nixbld/pytest-0/test0/mesonpy-test-7vsk0jln/configure_data-1.0.0-py3-none-any.whl')

    def test_configure_data(wheel_configure_data):
        artifact = wheel.wheelfile.WheelFile(wheel_configure_data)
    
>       assert wheel_contents(artifact) == {
            'configure_data-1.0.0.data/platlib/configure_data.py',
            'configure_data-1.0.0.dist-info/METADATA',
            'configure_data-1.0.0.dist-info/RECORD',
            'configure_data-1.0.0.dist-info/WHEEL',
        }
E       AssertionError: assert {'configure_data-1.0.0.dist-info/METADATA',\n 'configure_data-1.0.0.dist-info/RECORD',\n 'configure_data-1.0.0.dist-info/WHEEL',\n 'configure_data.py'} == {'configure_data-1.0.0.data/platlib/configure_data.py',\n 'configure_data-1.0.0.dist-info/METADATA',\n 'configure_data-1.0.0.dist-info/RECORD',\n 'configure_data-1.0.0.dist-info/WHEEL'}
E         Extra items in the left set:
E         'configure_data.py'
E         Extra items in the right set:
E         'configure_data-1.0.0.data/platlib/configure_data.py'
E         Full diff:
E           {
E         -  'configure_data-1.0.0.data/platlib/configure_data.py',
E            'configure_data-1.0.0.dist-info/METADATA',
E            'configure_data-1.0.0.dist-info/RECORD',
E            'configure_data-1.0.0.dist-info/WHEEL',
E         +  'configure_data.py',
E           }

tests/test_wheel.py:103: AssertionError
---------------------------- Captured stdout setup -----------------------------
! Using Meson to generate the project metadata (no `project` section in pyproject.toml)
+ meson setup --native-file=/tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data/.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=/gnu/store/i0d555a5fd7isi606aqqmbp5zgy9jh6p-python-3.10.7 /tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data /tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data/.mesonpy-p779oj_6/build
The Meson build system
Version: 1.0.1
Source dir: /tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data
Build dir: /tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data/.mesonpy-p779oj_6/build
Build type: native build
Project name: configure-data
Project version: 1.0.0
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program python3 found: YES (/gnu/store/82nin1sk01l31p5vpnz9c2ki76qka9b0-python-wrapper-3.10.7/bin/python)
Configuring configure_data.py using configuration
Build targets in project: 0

configure-data 1.0.0

  User defined options
    Native files: /tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data/.mesonpy-native-file.ini
    debug       : false
    optimization: 2
    prefix      : /gnu/store/i0d555a5fd7isi606aqqmbp5zgy9jh6p-python-3.10.7

Found ninja-1.11.1 at /gnu/store/cv9lcp1dzh9n0b6jrlvlp5zrc0vgqy8d-ninja-1.11.1/bin/ninja
+ meson compile
ninja: no work to do.
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /gnu/store/cv9lcp1dzh9n0b6jrlvlp5zrc0vgqy8d-ninja-1.11.1/bin/ninja
+ meson install --destdir /tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data/.mesonpy-p779oj_6/install
ninja: Entering directory `/tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data/.mesonpy-p779oj_6/build'
ninja: no work to do.
Installing /tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data/.mesonpy-p779oj_6/build/configure_data.py to /tmp/guix-build-meson-python-0.8.1.drv-0/meson_python-0.8.1/tests/packages/configure-data/.mesonpy-p779oj_6/install/gnu/store/i0d555a5fd7isi606aqqmbp5zgy9jh6p-python-3.10.7/lib/python3.10/site-packages
Copying files to wheel...
Backtrace:
In ice-9/boot-9.scm:
    724:2 19 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8 18 (_ #(#(#<directory (guile-user) 7f487fd90c80>)))
In guix/ui.scm:
   2300:7 17 (run-guix . _)
  2263:10 16 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1752:10 15 (with-exception-handler _ _ #:unwind? _ # _)
In guix/status.scm:
    830:4 14 (call-with-status-report _ _)
In ice-9/boot-9.scm:
  1752:10 13 (with-exception-handler _ _ #:unwind? _ # _)
In guix/store.scm:
   659:37 12 (thunk)
   1298:8 11 (call-with-build-handler _ _)
   1298:8 10 (call-with-build-handler #<procedure 7f487d2f2030 at g…> …)
In guix/scripts/build.scm:
   802:27  9 (_)
In guix/store.scm:
  1417:15  8 (_ #<store-connection 256.99 7f487fd267d0> _ _)
   737:14  7 (process-stderr _ _)
In unknown file:
           6 (display "@ build-log 9531 568\nesonpy-p779oj_6/instal…" …)
In guix/status.scm:
   770:20  5 (write! _ _ _)
In srfi/srfi-1.scm:
   460:18  4 (fold #<procedure 7f487fe08640 at guix/status.scm:659:…> …)
In guix/status.scm:
   660:15  3 (_ (build-log 9531 "[0/0] ") #<<build-status> building:…>)
   195:29  2 (update-build #<<build-status> building: (#<<build> de…> …)
In ice-9/boot-9.scm:
  1685:16  1 (raise-exception _ #:continuable? _)
  1685:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Throw to key `numerical-overflow' with args `("divide" "Numerical overflow" #f #f)'.
--8<---------------cut here---------------end--------------->8---

core-updates is at commit 2bde53c594aadca3df85d1011a41d8dfc183bb4b.

-- 
Thanks,
Maxim