Subject: bug#42553: closed (Re: bug#42553: python-gevent is broken on i686-linux (tests fail))

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 14 Jul 2022 02:41:02 +0000

Your bug report

#42553: python-gevent is broken on i686-linux (tests fail)

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
42553: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=42553
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#42553: python-gevent is broken on i686-linux (tests fail)
From: Maxim Cournoyer <[email-masked]>
To: Jakub Kądziołka <[email-masked]>
Cc: [email-masked]
Date: Wed, 13 Jul 2022 22:40:20 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Maxim Cournoyer <[email-masked]> writes:

> Hello,
>
> Jakub Kądziołka <[email-masked]> writes:
>
>> The package python-gevent doesn't build on i686-linux, the following
>> test failure occurs:
>>
>>   ======================================================================
>>   FAIL: test_unlink (gevent.tests.test__core_stat.TestCoreStat)
>>   ----------------------------------------------------------------------
>>   Traceback (most recent call last):
>>     File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/testing/errorhandler.py", line 47, in wrapper
>>       return method(self, *args, **kwargs)
>>     File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/testing/errorhandler.py", line 34, in wrapper
>>       return method(self, *args, **kwargs)
>>     File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/testing/testcase.py", line 182, in wrapper
>>       return method(self, *args, **kwargs)
>>     File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/tests/test__core_stat.py", line 114, in test_unlink
>>       self._check_attr('attr', True)
>>     File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/tests/test__core_stat.py", line 66, in _check_attr
>>       self.assertIsNone(x, name)
>>   AssertionError: os.stat_result(st_mode=997, st_ino=0, st_dev=74395714104328192, st_nlink=30000, st_uid=0, st_gid=0, st_size=6851593278123409408, st_atime=1595260873, st_mtime=0, st_ctime=-2) is not None : attr
>>   
>>   ----------------------------------------------------------------------
>>   Ran 48 tests in 1.238s
>>
>
> Just a follow-up to mention that this still occurs when building with
> --system=i686-linux, even with the recent python-gevent update to
> 20.9.0.

Finally disabled the test in 692c2ad327.

Closing.

Thanks for the report!

Maxim

Subject: python-gevent is broken on i686-linux (tests fail)
From: Jakub Kądziołka <[email-masked]>
To: [email-masked]
Date: Sun, 26 Jul 2020 20:35:03 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

The package python-gevent doesn't build on i686-linux, the following
test failure occurs:

  ======================================================================
  FAIL: test_unlink (gevent.tests.test__core_stat.TestCoreStat)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/testing/errorhandler.py", line 47, in wrapper
      return method(self, *args, **kwargs)
    File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/testing/errorhandler.py", line 34, in wrapper
      return method(self, *args, **kwargs)
    File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/testing/testcase.py", line 182, in wrapper
      return method(self, *args, **kwargs)
    File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/tests/test__core_stat.py", line 114, in test_unlink
      self._check_attr('attr', True)
    File "/tmp/guix-build-python-gevent-20.6.2.drv-0/gevent-20.6.2/build/lib.linux-i686-3.8/gevent/tests/test__core_stat.py", line 66, in _check_attr
      self.assertIsNone(x, name)
  AssertionError: os.stat_result(st_mode=997, st_ino=0, st_dev=74395714104328192, st_nlink=30000, st_uid=0, st_gid=0, st_size=6851593278123409408, st_atime=1595260873, st_mtime=0, st_ctime=-2) is not None : attr
  
  ----------------------------------------------------------------------
  Ran 48 tests in 1.238s

I have created a simple standalone script based on this test case:

import os, tempfile, gevent
fd, path = tempfile.mkstemp('.test')
os.close(fd)
hub = gevent.get_hub()
watcher = hub.loop.stat(path, interval=-1)
hub.loop.update_now()
gevent.spawn_later(0.5, os.unlink, path)
hub.wait(watcher)
print(watcher.attr)
print(watcher.prev)

After adding a (delete 'check) to python-gevent's arguments, we observe
the following:

% ./pre-inst-env guix environment --ad-hoc python python-gevent -- python3 ~/tmp/gevent-test.py
None
os.stat_result(st_mode=33152, st_ino=44162375, st_dev=2052, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1595787602, st_mtime=1595787602, st_ctime=1595787602)
% ./pre-inst-env guix environment --system=i686-linux --ad-hoc python python-gevent -- python3 ~/tmp/gevent-test.py
os.stat_result(st_mode=1000, st_ino=0, st_dev=189675956338688000, st_nlink=1000, st_uid=0, st_gid=0, st_size=6853855360088801280, st_atime=1595787555, st_mtime=0, st_ctime=-2)
os.stat_result(st_mode=33152, st_ino=2052, st_dev=2052, st_nlink=1, st_uid=1000, st_gid=1000, st_size=17592186044416, st_atime=1595787555, st_mtime=1595787555, st_ctime=0)

Namely, the i686 variant returns entirely bogus values.

I have tried reproducing this in a Guix-less environment in a Docker
container based on the i386/debian:bullseye image, but I haven't had any
luck.

Regards,
Jakub Kądziołka