Issue1346144
This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2005-11-02 17:07 by titanstar, last changed 2022-04-11 14:56 by admin. This issue is now closed.
Files | ||||
---|---|---|---|---|
File name | Uploaded | Description | Edit | |
1346144-fix.diff | mwh, 2005-11-23 12:51 | mwh's fix #1 | ||
unal-float2.diff | titanstar, 2005-11-26 18:00 | titanstar's correction to fix #1 |
Messages (6) | |||
---|---|---|---|
msg26782 - (view) | Author: Rune Holm (titanstar) | Date: 2005-11-02 17:07 | |
Object/floatobject.c:_PyFloat_Unpack8 from svn head performs an unaligned load of a double, causing the cPickle unit test to fail on linux/mips and openbsd/sparc64. http://pxr.openlook.org/pxr/ diff/Objects/floatobject.c?v=release24- maint;diffval=head;diffvar=v reveals that somebody has added a fast path in _PyFloat_Unpack8 since 2.4 that fails to check for unaligned accesses, and therefore performs an illegal operation on architectures that don't support unaligned accesses. Here is the relevant traceback from linux/mips: (gdb) run Lib/test/test_cpickle.py Starting program: /ping/wirth/home0/runehol/projects/python-mips/ python Lib/test/test_cpickle.py [Thread debugging using libthread_db enabled] [New Thread 16384 (LWP 4379)] test_callapi (__main__.cPickleTests) ... ok test_dict_chunking (__main__.cPickleTests) ... ok test_dump_closed_file (__main__.cPickleTests) ... ok test_garyp (__main__.cPickleTests) ... ok test_getinitargs (__main__.cPickleTests) ... ok test_global_ext1 (__main__.cPickleTests) ... ok test_global_ext2 (__main__.cPickleTests) ... ok test_global_ext4 (__main__.cPickleTests) ... ok test_highest_protocol (__main__.cPickleTests) ... ok test_insecure_strings (__main__.cPickleTests) ... ok test_ints (__main__.cPickleTests) ... ok test_list_chunking (__main__.cPickleTests) ... ok test_load_closed_file (__main__.cPickleTests) ... ok Program received signal SIGBUS, Bus error. [Switching to Thread 16384 (LWP 4379)] 0x004414e0 in _PyFloat_Unpack8 (p=0x2b05282f "@", le=0) at Objects/floatobject.c:1737 1737 return *(double*)p; (gdb) bt #0 0x004414e0 in _PyFloat_Unpack8 (p=0x2b05282f "@", le=0) at Objects/floatobject.c:1737 #1 0x2b10a750 in load_binfloat (self=0x2b0dc308) at /ping/wirth/home0/runehol/projects/python-mips/Modules/ cPickle.c:3361 #2 0x2b113674 in load (self=0x2b0dc308) at /ping/wirth/home0/runehol/projects/python-mips/Modules/ cPickle.c:4480 #3 0x2b1186ac in cpm_loads (self=0x0, args=0x2b2c2c78) at /ping/wirth/home0/runehol/projects/python-mips/Modules/ cPickle.c:5476 #4 0x005c45f4 in PyCFunction_Call (func=0x2b0d92b8, arg=0x2b2c2c78, kw=0x0) at Objects/methodobject.c:73 #5 0x0050f8f0 in call_function (pp_stack=0x7fff1e68, oparg=1) at Python/ceval.c:3565 #6 0x0050710c in PyEval_EvalFrameEx (f=0x10080868, throw=0) at Python/ceval.c:2181 #7 0x00510078 in fast_function (func=0x2b222da0, pp_stack=0x7fff2428, n=1, na=1, nk=0) at Python/ceval.c:3647 #8 0x0050fc14 in call_function (pp_stack=0x7fff2428, oparg=0) at Python/ceval.c:3586 #9 0x0050710c in PyEval_EvalFrameEx (f=0x10034eb0, throw=0) at Python/ceval.c:2181 #10 0x0050b0d4 in PyEval_EvalCodeEx (co=0x2b0d5d38, globals=0x2b0cd4d0, locals=0x0, args=0x2b22820c, argcount=2, kws=0x2b2c5048, kwcount=0, defs=0x2b0e7b3c, defcount=1, closure=0x0) at Python/ceval.c: 2739 #11 0x005c3260 in function_call (func=0x2b0ee248, arg=0x2b2281f8, ---Type <return> to continue, or q <return> to quit--- kw=0x2b2c4578) at Objects/funcobject.c:550 #12 0x0041e8dc in PyObject_Call (func=0x2b0ee248, arg=0x2b2281f8, kw=0x2b2c4578) at Objects/abstract.c:1777 #13 0x005112b8 in ext_do_call (func=0x2b0ee248, pp_stack=0x7fff2aa8, flags=3, na=1, nk=0) at Python/ceval.c:3842 #14 0x00507534 in PyEval_EvalFrameEx (f=0x100347c8, throw=0) at Python/ceval.c:2221 #15 0x0050b0d4 in PyEval_EvalCodeEx (co=0x2b0d5d90, globals=0x2b0cd4d0, locals=0x0, args=0x2b22824c, argcount=2, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:2739 #16 0x005c3260 in function_call (func=0x2b0ee2a0, arg=0x2b228238, kw=0x0) at Objects/funcobject.c:550 #17 0x0041e8dc in PyObject_Call (func=0x2b0ee2a0, arg=0x2b228238, kw=0x0) at Objects/abstract.c:1777 #18 0x00430b7c in instancemethod_call (func=0x2b0ee2a0, arg=0x2b228238, kw=0x0) at Objects/classobject.c:2447 #19 0x0041e8dc in PyObject_Call (func=0x2b0aaf38, arg=0x2b2c2b60, kw=0x0) at Objects/abstract.c:1777 #20 0x004b5c80 in slot_tp_call (self=0x2b1f5118, args=0x2b2c2b60, kwds=0x0) at Objects/typeobject.c:4530 #21 0x0041e8dc in PyObject_Call (func=0x2b1f5118, arg=0x2b2c2b60, kw=0x0) at Objects/abstract.c:1777 #22 0x00510d08 in do_call (func=0x2b1f5118, pp_stack=0x7fff3460, na=1, nk=0) at Python/ceval.c:3773 ---Type <return> to continue, or q <return> to quit--- |
|||
msg26783 - (view) | Author: Rune Holm (titanstar) | Date: 2005-11-02 17:38 | |
Logged In: YES user_id=858364 Some more digging reveals that the problem is caused by the patches from https://sourceforge.net/tracker/index.php? func=detail&aid=1181301&group_id=5470&atid=305470 and there is a similar problem in _PyFloat_Unpack4. |
|||
msg26784 - (view) | Author: Michael Hudson (mwh) | Date: 2005-11-03 10:33 | |
Logged In: YES user_id=6656 Uh, yeah, completely my fault -- don't know what I was thinking. Should be easy to fix, I'll have a patch for you soon. |
|||
msg26785 - (view) | Author: Michael Hudson (mwh) | Date: 2005-11-23 12:51 | |
Logged In: YES user_id=6656 Well, this isn't soon, but here's a patch to try. |
|||
msg26786 - (view) | Author: Rune Holm (titanstar) | Date: 2005-11-26 18:00 | |
Logged In: YES user_id=858364 Your patch to _PyFloat_Unpack4 loaded a float into the first half of a double, but after I fixed it to load into a float, the test suite passed on x86, sparc64 and mips. The revised patch should be attached. |
|||
msg26787 - (view) | Author: Michael Hudson (mwh) | Date: 2005-12-05 00:32 | |
Logged In: YES user_id=6656 Uh, that was an embarrassing one, thanks for the catch :) Checked in as revision 41601. Thanks for the report too :) |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:56:13 | admin | set | github: 42542 |
2005-11-02 17:07:40 | titanstar | create |