#12876: Fix element and parent classes of Hom categories to be abstract, and
simplify the Hom logic.
----------------------------------------+-----------------------------------
Reporter: nthiery | Owner: nthiery
Type: enhancement | Status: needs_work
Priority: major | Milestone: sage-5.4
Component: categories | Resolution:
Keywords: categories, Hom | Work issues: fix doctests and
segfaults
Report Upstream: N/A | Reviewers: Simon King
Authors: Nicolas M. ThiƩry | Merged in:
Dependencies: #715, #11521, #12215 | Stopgaps:
----------------------------------------+-----------------------------------
Changes (by SimonKing):
* status: needs_review => needs_work
* work_issues: commit message => fix doctests and segfaults
Comment:
With sage-5.3.b2 plus #715, #11521, #12215, #12313, #13370, #13378 and the
patches from here, I get
{{{
make ptest
...
The following tests failed:
sage -t -force_lib devel/sage/sage/interfaces/r.py # 1 doctests
failed
sage -t -force_lib
devel/sage/sage/rings/polynomial/infinite_polynomial_ring.py # 0 doctests
failed
sage -t -force_lib devel/sage/sage/categories/hecke_modules.py #
1 doctests failed
}}}
The error in hecke_modules.py is due to
{{{
NotImplementedError: please implement _an_element_ for Set of Morphisms
from Modular Forms space of dimension 3 for Congruence Subgroup Gamma0(7)
of weight 4 over Rational Field to Modular Forms space of dimension 3 for
Congruence Subgroup Gamma0(7) of weight 4 over Rational Field in Category
of Hecke modules over Rational Field
}}}
The error in expect/r.py looks strange to me:
{{{
sage -t -force_lib devel/sage/sage/interfaces/r.py
**********************************************************************
File "/mnt/local/king/SAGE/prereleases/sage-5.3.beta2/devel/sage-
main/sage/interfaces/r.py", line 1169:
sage: os.path.realpath(tmpdir) == sageobj(r.getwd())
Expected:
True
Got:
False
**********************************************************************
1 items had failures:
1 of 7 in __main__.example_43
}}}
The error is not reproducible, at least not if I run the test
individually.
In infinite_polynomial_ring.py one gets a segfault. One does ''not'' get a
segfault when running the tests with `--verbose`. But gdb yields the
following backtrace:
{{{
#0 PyObject_Malloc (nbytes=123) at Objects/obmalloc.c:788
#1 0x00007ffff7a9bd5b in string_concat (a=0x7ffff7ed6730, bb=0x54c6180)
at Objects/stringobject.c:1056
#2 0x00007ffff7a9dda5 in PyString_Concat (pv=0x7fffffffac58, w=<value
optimized out>) at Objects/stringobject.c:3862
#3 0x00007ffff7a46025 in string_concatenate (v=0x7ffff7ed6730,
w=0x54c6180, f=<value optimized out>, next_instr=<value optimized out>) at
Python/ceval.c:4856
#4 0x00007ffff7af56c7 in PyEval_EvalFrameEx (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:1548
#5 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=2, kws=0x49a5b70, kwcount=0,
defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
#6 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#7 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#8 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#9 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=2, kws=0x49a5930, kwcount=0,
defs=0x7ffff7f70968, defcount=1, closure=0x0) at Python/ceval.c:3253
#10 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#11 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#12 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#13 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=2, kws=0x50ed188, kwcount=0,
defs=0x7ffff7f708e8, defcount=1, closure=0x0) at Python/ceval.c:3253
#14 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#15 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#16 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#17 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=3, kws=0x50ecf90, kwcount=0,
defs=0x4918628, defcount=1, closure=0x0) at Python/ceval.c:3253
#18 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#19 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#20 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#21 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=3, kws=0x50ecd88, kwcount=0,
defs=0x7ffff7f708a8, defcount=1, closure=0x0) at Python/ceval.c:3253
#22 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#23 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#24 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#25 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=3, kws=0x50ec980, kwcount=0,
defs=0x7ffff7f5aa40, defcount=2, closure=0x0) at Python/ceval.c:3253
#26 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#27 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#28 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#29 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=3, kws=0x50eac40, kwcount=1,
defs=0x7ffff7ee9218, defcount=2, closure=0x0) at Python/ceval.c:3253
#30 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#31 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#32 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#33 0x00007ffff7af627b in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4107
#34 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#35 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#36 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=4, kws=0x0, kwcount=0,
defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
#37 0x00007ffff7a7a02c in function_call (func=0x491cb18, arg=0x476c050,
kw=0x0) at Objects/funcobject.c:526
#38 0x00007ffff7a522c3 in PyObject_Call (func=0x491cb18, arg=<value
optimized out>, kw=<value optimized out>) at Objects/abstract.c:2529
#39 0x00007ffff7a5fa0f in instancemethod_call (func=0x491cb18,
arg=0x476c050, kw=0x0) at Objects/classobject.c:2578
#40 0x00007ffff7a522c3 in PyObject_Call (func=0x42995f0, arg=<value
optimized out>, kw=<value optimized out>) at Objects/abstract.c:2529
#41 0x00007ffff7af40fd in do_call (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4239
#42 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4044
#43 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#44 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=4, kws=0x4d12cf0, kwcount=0,
defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
#45 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#46 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#47 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#48 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=2, kws=0x488e5b0, kwcount=3,
defs=0x491d388, defcount=3, closure=0x0) at Python/ceval.c:3253
#49 0x00007ffff7a7a123 in function_call (func=0x491cc80, arg=0x4906cb0,
kw=0x494f090) at Objects/funcobject.c:526
#50 0x00007ffff7a522c3 in PyObject_Call (func=0x491cc80, arg=<value
optimized out>, kw=<value optimized out>) at Objects/abstract.c:2529
#51 0x00007ffff7a5fa0f in instancemethod_call (func=0x491cc80,
arg=0x4906cb0, kw=0x494f090) at Objects/classobject.c:2578
#52 0x00007ffff7a522c3 in PyObject_Call (func=0x4856be0, arg=<value
optimized out>, kw=<value optimized out>) at Objects/abstract.c:2529
#53 0x00007ffff7af40fd in do_call (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4239
#54 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4044
#55 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#56 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=2, kws=0x4068fd0, kwcount=0,
defs=0x48c48d8, defcount=3, closure=0x0) at Python/ceval.c:3253
#57 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#58 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#59 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#60 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=0, kws=0x49af830, kwcount=10,
defs=0x49104a8, defcount=10, closure=0x0) at Python/ceval.c:3253
#61 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#62 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#63 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#64 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=1, kws=0x6d8fb8, kwcount=3,
defs=0x4910310, defcount=10, closure=0x0) at Python/ceval.c:3253
#65 0x00007ffff7af5550 in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4117
#66 call_function (f=<value optimized out>, throwflag=<value optimized
out>) at Python/ceval.c:4042
#67 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value
optimized out>) at Python/ceval.c:2666
#68 0x00007ffff7af7125 in PyEval_EvalCodeEx (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>, args=<value
optimized out>, argcount=0, kws=0x0, kwcount=0,
defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
#69 0x00007ffff7af7262 in PyEval_EvalCode (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>) at
Python/ceval.c:667
#70 0x00007ffff7b19760 in run_mod (fp=0x6c66c0, filename=<value optimized
out>, start=<value optimized out>, globals=0x640280, locals=0x640280,
closeit=1, flags=0x7fffffffd380)
at Python/pythonrun.c:1353
#71 PyRun_FileExFlags (fp=0x6c66c0, filename=<value optimized out>,
start=<value optimized out>, globals=0x640280, locals=0x640280, closeit=1,
flags=0x7fffffffd380) at Python/pythonrun.c:1339
#72 0x00007ffff7b1a1ff in PyRun_SimpleFileExFlags (fp=0x6c66c0,
filename=0x7fffffffd8ff
"/mnt/local/king/.sage/tmp/infinite_polynomial_ring_15153.py", closeit=1,
flags=0x7fffffffd380)
at Python/pythonrun.c:943
#73 0x00007ffff7b2d4b5 in Py_Main (argc=<value optimized out>, argv=<value
optimized out>) at Modules/main.c:639
#74 0x00007ffff6e1ec8d in __libc_start_main (main=<value optimized out>,
argc=<value optimized out>, ubp_av=<value optimized out>, init=<value
optimized out>, fini=<value optimized out>,
rtld_fini=<value optimized out>, stack_end=0x7fffffffd498) at libc-
start.c:228
#75 0x0000000000400619 in _start ()
}}}
Could very well be that this is (once again) due to the new weak caches.
But I will also rerun without #13370 and #13378.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12876#comment:57>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.