GNU bug report logs - #73575
Mate fails to build on i686-linux

Previous Next

Package: guix;

Reported by: Dariqq <dariqq <at> posteo.net>

Date: Mon, 30 Sep 2024 21:43:07 UTC

Severity: normal

Full log


View this message in rfc822 format

From: Dariqq <dariqq <at> posteo.net>
To: 73575 <at> debbugs.gnu.org
Subject: bug#73575: Mate fails to build on i686-linux
Date: Tue,  1 Oct 2024 17:08:09 +0000
Had a look at the test failures:


- python-werkzeug:
tests/test_serving.py:  ConnectionRefusedError: [Errno 111] Connection 
refused

Not sure what is causing this. Some other linux distributions disable 
this test (this package has a lot of dependants though)



- skia
../../src/base/SkContainers.cpp:66: fatal error: "assert(capacity >= 0)"


The function that is causing the error looks like this

#+begin_src cpp
size_t SkContainerAllocator::roundUpCapacity(int64_t capacity) const {
    SkASSERT(capacity >= 0);

    // If round will not go above fMaxCapacity return rounded capacity.
    if (capacity < fMaxCapacity - kCapacityMultiple) {
        return SkAlignTo(capacity, kCapacityMultiple);
    }

    return SkToSizeT(fMaxCapacity);
}
#+end_src


In the same file there is another function which calls roundUpCapacity 
which looks like it can overflow because things get castet to int64_t 
after the multiplication which will fail to catch the overflow

#+begin_src cpp
size_t SkContainerAllocator::growthFactorCapacity(int capacity, double 
growthFactor) const {
    SkASSERT(capacity >= 0);
    SkASSERT(growthFactor >= 1.0);
    // Multiply by the growthFactor. Remember this must be done in 
64-bit ints and not
    // size_t because size_t changes.
    const int64_t capacityGrowth = static_cast<int64_t>(capacity * 
growthFactor);

    // Notice that for small values of capacity, rounding up will 
provide most of the growth.
    return this->roundUpCapacity(capacityGrowth);
}
#+end_src




- node:
In tests/parallel/test-fs-utimes-y2K38.js
this is failing:

#+begin_src js
const path = `${tmpdir.path}/test-utimes-precision`;
fs.writeFileSync(path, '');

const Y2K38_mtime = 2 ** 31;
fs.utimesSync(path, Y2K38_mtime, Y2K38_mtime);
#+end_src

with
#+begin_example
not ok 1133 parallel/test-fs-utimes-y2K38
  ---
  duration_ms: 157.49700
  severity: fail
  exitcode: 1
  stack: |-
    node:internal/fs/utils:351
        throw err;
        ^

    Error: EINVAL: invalid argument, utime 
'/tmp/guix-build-node-18.19.0.drv-0/node-v18.19.0/test/.tmp.1155/test-utimes-precision'
        at Object.utimesSync (node:fs:2134:3)
        at Object.<anonymous> 
(/tmp/guix-build-node-18.19.0.drv-0/node-v18.19.0/test/parallel/test-fs-utimes-y2K38.js:46:4)
        at Module._compile (node:internal/modules/cjs/loader:1356:14)
        at Module._extensions..js 
(node:internal/modules/cjs/loader:1414:10)
        at Module.load (node:internal/modules/cjs/loader:1197:32)
        at Module._load (node:internal/modules/cjs/loader:1013:12)
        at Function.executeUserEntryPoint [as runMain] 
(node:internal/modules/run_main:128:12)
        at node:internal/main/run_main_module:28:49 {
      errno: -22,
      syscall: 'utime',
      code: 'EINVAL',
      path: 
'/tmp/guix-build-node-18.19.0.drv-0/node-v18.19.0/test/.tmp.1155/test-utimes-precision'
    }

    Node.js v18.19.0
#+end_example


This seems to be another overflow/integer too big error as 2**31 -1 works.




This bug report was last modified 63 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.