#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.

Reply via email to