I compiled Python 3.4.3 on Solaris 11, and when I ran the regression test, I get a core dump when the hash() function was being used. I went through the bug database looking for something similar but couldn't find anything.
Tests like:
test_unaligned_buffers (test.test_hash.HashEqualityTestCase) ... Fatal Python error: Bus error
Current thread 0x00000001 (most recent call first):
File "/usr/local/lib/python3.4/test/test_hash.py", line 89 in test_unaligned_buffers
File "/usr/local/lib/python3.4/unittest/case.py", line 577 in run
File "/usr/local/lib/python3.4/unittest/case.py", line 625 in __call__
File "/usr/local/lib/python3.4/unittest/suite.py", line 122 in run
File "/usr/local/lib/python3.4/unittest/suite.py", line 84 in __call__
File "/usr/local/lib/python3.4/unittest/suite.py", line 122 in run
File "/usr/local/lib/python3.4/unittest/suite.py", line 84 in __call__
File "/usr/local/lib/python3.4/unittest/suite.py", line 122 in run
File "/usr/local/lib/python3.4/unittest/suite.py", line 84 in __call__
File "/usr/local/lib/python3.4/unittest/runner.py", line 168 in run
File "/usr/local/lib/python3.4/test/support/__init__.py", line 1769 in _run_suite
File "/usr/local/lib/python3.4/test/support/__init__.py", line 1803 in run_unittest
File "/usr/local/lib/python3.4/test/regrtest.py", line 1279 in test_runner
File "/usr/local/lib/python3.4/test/regrtest.py", line 1280 in runtest_inner
File "/usr/local/lib/python3.4/test/regrtest.py", line 978 in runtest
File "/usr/local/lib/python3.4/test/regrtest.py", line 763 in main
File "/usr/local/lib/python3.4/test/regrtest.py", line 1564 in main_in_temp_cwd
File "/usr/local/lib/python3.4/test/__main__.py", line 3 in <module>
File "/usr/local/lib/python3.4/runpy.py", line 85 in _run_code
File "/usr/local/lib/python3.4/runpy.py", line 170 in _run_module_as_main
Bus Error (core dumped)
and
test_hash_equality (test.datetimetester.TestTime_Fast) ... Fatal Python error: Bus error
Current thread 0x00000001 (most recent call first):
File "/usr/local/lib/python3.4/test/datetimetester.py", line 2155 in test_hash_equality
File "/usr/local/lib/python3.4/unittest/case.py", line 577 in run
File "/usr/local/lib/python3.4/unittest/case.py", line 625 in __call__
File "/usr/local/lib/python3.4/unittest/suite.py", line 122 in run
File "/usr/local/lib/python3.4/unittest/suite.py", line 84 in __call__
File "/usr/local/lib/python3.4/unittest/suite.py", line 122 in run
File "/usr/local/lib/python3.4/unittest/suite.py", line 84 in __call__
File "/usr/local/lib/python3.4/unittest/runner.py", line 168 in run
File "/usr/local/lib/python3.4/test/support/__init__.py", line 1769 in _run_suite
File "/usr/local/lib/python3.4/test/support/__init__.py", line 1803 in run_unittest
File "/usr/local/lib/python3.4/test/test_datetime.py", line 45 in test_main
File "/usr/local/lib/python3.4/test/regrtest.py", line 1280 in runtest_inner
File "/usr/local/lib/python3.4/test/regrtest.py", line 978 in runtest
File "/usr/local/lib/python3.4/test/regrtest.py", line 763 in main
File "/usr/local/lib/python3.4/test/regrtest.py", line 1564 in main_in_temp_cwd
File "/usr/local/lib/python3.4/test/__main__.py", line 3 in <module>
File "/usr/local/lib/python3.4/runpy.py", line 85 in _run_code
File "/usr/local/lib/python3.4/runpy.py", line 170 in _run_module_as_main
Bus Error (core dumped)
I then ran the same test through gdb:
$ gdb /usr/local/bin/python3.4
GNU gdb (GDB) 7.8.1
<snip>
(gdb) run -m test -v test_hash
Starting program: /usr/local/bin/python3.4 -m test -v test_hash
[Thread debugging using libthread_db enabled]
[New Thread 1 (LWP 1)]
== CPython 3.4.3 (default, Mar 25 2015, 17:35:25) [GCC 4.6.2]
== Solaris-2.11-sun4v-sparc-32bit-ELF big-endian
== hash algorithm: fnv 32bit
== /tmp/test_python_12329
Testing with flags: sys.flags(debug=0, inspect=0, interactive=0, optimize=0, dont_write_bytecode=0, no_user_site=0, no_
site=0, ignore_environment=0, verbose=0, bytes_warning=0, quiet=0, hash_randomization=1, isolated=0)
[1/1] test_hash
test_empty_string (test.test_hash.BytesHashRandomizationTests) ... ok
test_fixed_hash (test.test_hash.BytesHashRandomizationTests) ... ok
test_long_fixed_hash (test.test_hash.BytesHashRandomizationTests) ... ok
test_null_hash (test.test_hash.BytesHashRandomizationTests) ... ok
test_randomized_hash (test.test_hash.BytesHashRandomizationTests) ... ok
test_randomized_hash (test.test_hash.DatetimeDateTests) ... ok
test_randomized_hash (test.test_hash.DatetimeDatetimeTests) ... FAIL
test_randomized_hash (test.test_hash.DatetimeTimeTests) ... FAIL
test_hashes (test.test_hash.HashBuiltinsTestCase) ... ok
test_hash_distribution (test.test_hash.HashDistributionTestCase) ... ok
test_coerced_floats (test.test_hash.HashEqualityTestCase) ... ok
test_coerced_integers (test.test_hash.HashEqualityTestCase) ... ok
test_numeric_literals (test.test_hash.HashEqualityTestCase) ... ok
test_unaligned_buffers (test.test_hash.HashEqualityTestCase) ...
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1 (LWP 1)]
0xff25d14c in fnv (src=0x1d2289, len=127) at Python/pyhash.c:267
267 x = (_PyHASH_MULTIPLIER * x) ^ block.value;
(gdb) bt
#0 0xff25d14c in fnv (src=0x1d2289, len=127) at Python/pyhash.c:267
#1 0xff25d3f8 in _Py_HashBytes (src=0x1d2289, len=127) at Python/pyhash.c:186
#2 0xff1a7ce4 in memory_hash (self=0xfdff5570) at Objects/memoryobject.c:2793
#3 0xff1afa40 in PyObject_Hash (v=0xfdff5570) at Objects/object.c:757
#4 0xff22b6fc in builtin_hash (self=0xfee23600, v=0xfdff5570) at Python/bltinmodule.c:1269
#5 0xff236a70 in call_function (oparg=<optimized out>, pp_stack=0xffbfcc94) at Python/ceval.c:4224
#6 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:2838
#7 0xff237790 in fast_function (nk=<optimized out>, na=<optimized out>, n=1, pp_stack=0xffbfcd8c,
func=<optimized out>) at Python/ceval.c:4334
<snip>
(gdb) list
262
263 x = (Py_uhash_t) _Py_HashSecret.fnv.prefix;
264 x ^= (Py_uhash_t) *p << 7;
265 while (blocks--) {
266 PY_UHASH_CPY(block.bytes, p);
267 x = (_PyHASH_MULTIPLIER * x) ^ block.value;
268 p += SIZEOF_PY_UHASH_T;
269 }
270 /* add remainder */
271 for (; remainder > 0; remainder--)
Further info:
$ uname -a
SunOS vstrlily1d 5.11 11.1 sun4v sparc sun4v Solaris
$ gcc --verbose
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/sparc-sun-solaris2.11/4.6.2/lto-wrapper
Target: sparc-sun-solaris2.11
Configured with: ../gcc-4.6.2/configure --prefix=/usr/local --enable-languages=c,c++ --disable-nls --with-gnu-as --with-gnu-ld --target=sparc-sun-solaris2.11
Thread model: posix
gcc version 4.6.2 (GCC) |