[Python-Dev] alpha problems -- need input (original) (raw)

Neal Norwitz nnorwitz at gmail.com
Thu Mar 30 07:37:21 CEST 2006


These issues are on HEAD. There might be some others I missed.

With cc there are at least 2 issues:

http://www.python.org/dev/buildbot/all/alpha%20Tru64%205.1%20trunk/builds/18/step-test/0

Should we skip the test for an invalid seek on stdin on osf1? I haven't investigated the test_pty failure further.

With gcc, there are also several issues:

The question is how to fix these. test_float and test_struct fail due to a Floating Point Exception signal (SIGFPE). test_long fails due to float(shuge) raising a ValueError. There is a comment:

        # XXX Perhaps float(shuge) can raise OverflowError on some box?
        # The comparison should not.

Note: it raises value error, not OverflowError.

Should I just wrap the float(shuge) in a try/except and skip the test if an exception is raised?

The patches below fix the float and struct problems. I'm not sure if we should ignore SIGFPE in test_float. I'm also not sure if the change to floatobject.c should be made. It's possible there is a compiler flag that would help. I tried -mieee and a few others, but none seemed to make a difference for gcc.

test_ctypes fails because _findLib() doesn't seem to work properly on OSF1. Note: libc.so => /usr/shlib/libc.so

ERROR: test_find (ctypes.test.test_loading.LoaderTest)

Traceback (most recent call last): File "/net/ringneck/scratch1/nnorwitz/python/trunk/Lib/ctypes/test/test_loading.py", line 40, in test_find cdll.find(name) File "/net/ringneck/scratch1/nnorwitz/python/trunk/Lib/ctypes/_loader.py", line 205, in find raise OSError("Library %r not found" % name) OSError: Library 'c' not found

====================================================================== ERROR: test_load (ctypes.test.test_loading.LoaderTest)

Traceback (most recent call last): File "/net/ringneck/scratch1/nnorwitz/python/trunk/Lib/ctypes/test/test_loading.py", line 25, in test_load cdll.load(name) File "/net/ringneck/scratch1/nnorwitz/python/trunk/Lib/ctypes/_loader.py", line 112, in load return self._load(libname, mode) File "/net/ringneck/scratch1/nnorwitz/python/trunk/Lib/ctypes/_loader.py", line 124, in load_library return self._dlltype(libname, mode) File "/net/ringneck/scratch1/nnorwitz/python/trunk/Lib/ctypes/init.py", line 292, in init self._handle = _dlopen(self._name, mode) OSError: dlopen: Cannot map library libc.so.6

======================================================================

Below are the patches.

Index: Objects/floatobject.c

--- Objects/floatobject.c (revision 43416) +++ Objects/floatobject.c (working copy) @@ -1430,10 +1430,19 @@ return -1; } else {

+#ifndef MAXFLOAT +#define MAXFLOAT ((float)3.40282346638528860e+38) +#endif + if (x > MAXFLOAT || x < -MAXFLOAT) + goto Overflow; + y = (float)x; if ((float_format == ieee_little_endian_format && !le) || (float_format == ieee_big_endian_format && le)) { p += 3; Index: Lib/test/test_float.py

--- Lib/test/test_float.py (revision 43416) +++ Lib/test/test_float.py (working copy) @@ -1,4 +1,5 @@

+import signal import unittest, struct from test import test_support

@@ -83,6 +84,12 @@

is accident (today).

class IEEEFormatTestCase(unittest.TestCase): + def setUp(self): + signal.signal(signal.SIGFPE, signal.SIG_IGN) + + def tearDown(self): + signal.signal(signal.SIGFPE, signal.SIG_DFL) + if float.getformat("double").startswith("IEEE"): def test_double_specials_do_unpack(self): for fmt, data in [('>d', BE_DOUBLE_INF), Index: Lib/test/test_file.py

--- Lib/test/test_file.py (revision 43416) +++ Lib/test/test_file.py (working copy) @@ -100,12 +100,14 @@ print "writelines accepted sequence of non-string objects" f.close()

-try:

-except IOError:

-else:

+# This causes the interpreter to exit on OSF1 v5.1. +if sys.platform != 'osf1V5':

try: sys.stdin.truncate() Index: Lib/test/test_long.py

--- Lib/test/test_long.py (revision 43416) +++ Lib/test/test_long.py (working copy) @@ -372,10 +372,15 @@

         self.assertRaises(OverflowError, eval, test, namespace)

Index: Lib/test/test_struct.py

--- Lib/test/test_struct.py (revision 43416) +++ Lib/test/test_struct.py (working copy) @@ -429,11 +429,12 @@ # The same, but tack on a 1 bit so it rounds up to infinity. big = (1 << 25) - 1 big = math.ldexp(big, 127 - 24)

test_705836()



More information about the Python-Dev mailing list