#10250: segfault when multiplying QQ constant and SR vector (with user basis)
------------------------------+---------------------------------------------
Reporter: jason | Owner: jason, was
Type: defect | Status: new
Priority: major | Milestone:
Component: linear algebra | Keywords:
Author: | Upstream: N/A
Reviewer: | Merged:
Work_issues: |
------------------------------+---------------------------------------------
Comment(by vbraun):
The problem seems to be that the coercion ends up calling `__rmul__`
(which is inherited) and not `_rmul_` (which is directly defined in
`FreeModuleElement_generic_dense`:
{{{
sage: x
(sqrt(2), sqrt(2))
sage: x._rmul_(3)
(3*sqrt(2), 3*sqrt(2))
sage: x.__rmul__(3)
------------------------------------------------------------
Unhandled SIGSEGV: A segmentation fault occurred in Sage.
}}}
For the record, stack backtrace:
{{{
#0 __cxxabiv1::__dynamic_cast (src_ptr=0x100000001,
src_type=0x7fffd3a02f40,
dst_type=0x7fffd3a090c0, src2dst=0)
at ../../../../libstdc++-v3/libsupc++/dyncast.cc:54
#1 0x00007fffd3224803 in is_a<GiNaC::relational> (__pyx_v_left=0x428c9e0,
__pyx_v_right=0x41b9d70, __pyx_skip_dispatch=<value optimized out>)
at /home/vbraun/Sage/sage/local/include/pynac/basic.h:305
#2 is_a<GiNaC::relational> (__pyx_v_left=0x428c9e0,
__pyx_v_right=0x41b9d70,
__pyx_skip_dispatch=<value optimized out>)
at /home/vbraun/Sage/sage/local/include/pynac/ex.h:939
#3 __pyx_f_4sage_8symbolic_10expression_10Expression__mul_ (
__pyx_v_left=0x428c9e0, __pyx_v_right=0x41b9d70,
__pyx_skip_dispatch=<value optimized out>)
at sage/symbolic/expression.cpp:11284
#4 0x00007fffe046a122 in
__pyx_f_4sage_7modules_19free_module_element_31FreeModuleElement_generic_dense__rmul_
(__pyx_v_self=0x4289940,
__pyx_v_left=0x428c9e0, __pyx_skip_dispatch=<value optimized out>)
at sage/modules/free_module_element.c:15600
#5 0x00007fffe992212c in
__pyx_f_4sage_9structure_14coerce_actions_16LeftModuleAction__call_
(__pyx_v_self=0x72c410, __pyx_v_g=0x428c9e0,
__pyx_v_a=0x4289940, __pyx_skip_dispatch=<value optimized out>)
at sage/structure/coerce_actions.c:5437
#6 0x00007fffe9d4e9a1 in __pyx_pf_4sage_10categories_6action_6Action_act
(
__pyx_v_self=0x72c410, __pyx_args=0x412ce18, __pyx_kwds=0x0)
at sage/categories/action.c:2563
#7 0x00007ffff7c7e3b3 in PyObject_Call (func=0x737098,
arg=<value optimized out>, kw=<value optimized out>)
at Objects/abstract.c:2492
#8 0x00007fffe9927764 in
__pyx_pf_4sage_9structure_14coerce_actions_12ModuleAction___init__
(__pyx_v_self=0x72c410, __pyx_args=<value optimized out>,
__pyx_kwds=<value optimized out>) at
sage/structure/coerce_actions.c:5133
#9 0x00007ffff7cd9f18 in type_call (type=<value optimized out>,
args=0x412d5f0, kwds=0x0) at Objects/typeobject.c:747
#10 0x00007ffff7c7e3b3 in PyObject_Call (func=0x7fffe9b33de0,
arg=<value optimized out>, kw=<value optimized out>)
at Objects/abstract.c:2492
#11 0x00007fffe992a52c in
__pyx_pf_4sage_9structure_14coerce_actions_detect_element_action
(__pyx_self=<value optimized out>,
__pyx_args=<value optimized out>, __pyx_kwds=<value optimized out>)
at sage/structure/coerce_actions.c:4184
#12 0x00007ffff7c7e3b3 in PyObject_Call (func=0x1042d40,
arg=<value optimized out>, kw=<value optimized out>)
at Objects/abstract.c:2492
#13 0x00007fffeae9d34f in
__pyx_f_4sage_9structure_6parent_6Parent_discover_action
(__pyx_v_self=0x42d27f0, __pyx_v_S=0x121e8e0, __pyx_v_op=0x1042d40,
__pyx_v_self_on_left=0) at sage/structure/parent.c:14710
#14 0x00007fffeb0c5ecd in
__pyx_f_4sage_9structure_10parent_old_6Parent_get_acti---Type <return> to
continue, or q <return> to quit---
on_c_impl (__pyx_v_self=0x42d27f0, __pyx_v_S=<value optimized out>,
__pyx_v_op=<value optimized out>,
__pyx_v_self_on_left=<value optimized out>)
at sage/structure/parent_old.c:3254
#15 0x00007fffeb0c7441 in
__pyx_pf_4sage_9structure_10parent_old_6Parent_get_action_impl
(__pyx_v_self=0x42d27f0, __pyx_args=<value optimized out>,
__pyx_kwds=<value optimized out>) at sage/structure/parent_old.c:3204
#16 0x00007ffff7c7e3b3 in PyObject_Call (func=0x41abfc8,
arg=<value optimized out>, kw=<value optimized out>)
at Objects/abstract.c:2492
#17 0x00007fffeb0cdeb2 in
__pyx_f_4sage_9structure_10parent_old_6Parent_get_action_c
(__pyx_v_self=0x42d27f0, __pyx_v_S=0x121e8e0, __pyx_v_op=0x78a1b8,
__pyx_v_self_on_left=0, __pyx_skip_dispatch=<value optimized out>)
at sage/structure/parent_old.c:2892
#18 0x00007fffeb0c16c3 in
__pyx_f_4sage_9structure_10parent_old_6Parent__get_action_
(__pyx_v_self=0x42d27f0, __pyx_v_other=0x121e8e0,
__pyx_v_op=<value optimized out>,
__pyx_v_self_on_left=<value optimized out>,
__pyx_skip_dispatch=<value optimized out>)
at sage/structure/parent_old.c:6069
#19 0x00007fffeae9ab71 in
__pyx_f_4sage_9structure_6parent_6Parent_get_action (
__pyx_v_self=0x42d27f0, __pyx_v_S=0x121e8e0,
__pyx_skip_dispatch=<value optimized out>,
__pyx_optional_args=<value optimized out>) at
sage/structure/parent.c:13731
#20 0x00007fffea5bf810 in
__pyx_f_4sage_9structure_6coerce_24CoercionModel_cache_maps_discover_action
(__pyx_v_self=0x1043350, __pyx_v_R=0x121e8e0,
__pyx_v_S=0x42d27f0, __pyx_v_op=0x78a1b8,
__pyx_skip_dispatch=<value optimized out>) at
sage/structure/coerce.c:11909
#21 0x00007fffea5b2aca in
__pyx_f_4sage_9structure_6coerce_24CoercionModel_cache_maps_get_action
(__pyx_v_self=0x1043350, __pyx_v_R=0x121e8e0,
__pyx_v_S=0x42d27f0, __pyx_v_op=0x78a1b8,
__pyx_skip_dispatch=<value optimized out>) at
sage/structure/coerce.c:10837
#22 0x00007fffea5b5417 in
__pyx_f_4sage_9structure_6coerce_24CoercionModel_cache_maps_bin_op
(__pyx_v_self=0x1043350, __pyx_v_x=0x3296bd0,
__pyx_v_y=0x4289c00, __pyx_v_op=0x78a1b8,
__pyx_skip_dispatch=<value optimized out>) at
sage/structure/coerce.c:6080
#23 0x00007fffea7f8c8d in
__pyx_pf_4sage_9structure_7element_11RingElement___mul__
(__pyx_v_left=0x3296bd0, __pyx_v_right=0x4289c00)
at sage/structure/element.c:11399
#24 0x00007ffff7c7998a in binary_op1 (v=0x3296bd0, w=0x4289c00,
op_slot=16)
at Objects/abstract.c:917
#25 0x00007ffff7c7c788 in PyNumber_Multiply (v=0x3296bd0, w=0x4289c00)
at Objects/abstract.c:1188
#26 0x00007ffff7
throwflag=<value optimized out>) at Python/ceval.c:1118
#27 0x00007ffff7d2072c in PyEval_EvalCodeEx (co=0x6fabe8,
globals=<value optimized out>, locals=<value optimized out>,
args=<value optimized out>, argcount=0, kws=<value optimized out>,
kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:2968
#28 0x00007ffff7d20802 in PyEval_EvalCode (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>)
at Python/ceval.c:522
#29 0x00007ffff7d1f162 in exec_statement (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:4401
#30 PyEval_EvalFrameEx (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:1717
#31 0x00007ffff7d2072c in PyEval_EvalCodeEx (co=0xb13c60,
globals=<value optimized out>, locals=<value optimized out>,
args=<value optimized out>, argcount=2, kws=<value optimized out>,
kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:2968
#32 0x00007ffff7d1e8de in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:3802
#33 call_function (f=<value optimized out>, throwflag=<value optimized
out>)
at Python/ceval.c:3727
#34 PyEval_EvalFrameEx (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:2389
#35 0x00007ffff7d2072c in PyEval_EvalCodeEx (co=0xb13af8,
globals=<value optimized out>, locals=<value optimized out>,
args=<value optimized out>, argcount=3, kws=<value optimized out>,
kwcount=0, defs=0xb730f8, defcount=2, closure=0x0) at
Python/ceval.c:2968
#36 0x00007ffff7d1e8de in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:3802
#37 call_function (f=<value optimized out>, throwflag=<value optimized
out>)
at Python/ceval.c:3727
#38 PyEval_EvalFrameEx (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:2389
#39 0x00007ffff7d1fa7f in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:3792
#40 call_function (f=<value optimized out>, throwflag=<value optimized
out>)
at Python/ceval.c:3727
#41 PyEval_EvalFrameEx (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:2389
#42 0x00007ffff7d2072c in PyEval_EvalCodeEx (co=0xb13300,
globals=<value optimized out>, locals=<value optimized out>,
args=<value optimized out>, argcount=2, kws=<value optimized out>,
kwcount=0, defs=0xb6c868, defcount=1, closure=0x0) at
Python/ceval.c:2968
#43 0x00007ffff7d1e8de in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:3802
#44 call_function (f=<value optimized out>, throwflag=<value optimized
out>)
at Python/ceval.c:3727
#45 PyEval_EvalFrameEx (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:2389
#46 0x00007ffff7d2072c in PyEval_EvalCodeEx (co=0xb10cd8,
globals=<value optimized out>, locals=<value optimized out>,
args=<value optimized out>, argcount=2, kws=<value optimized out>,
kwcount=0, defs=0xb6c828, defcount=1, closure=0x0) at
Python/ceval.c:2968
#47 0x00007ffff7d1e8de in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:3802
#48 call_function (f=<value optimized out>, throwflag=<value optimized
out>)
at Python/ceval.c:3727
#49 PyEval_EvalFrameEx (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:2389
#50 0x00007ffff7d2072c in PyEval_EvalCodeEx (co=0x931f30,
globals=<value optimized out>, locals=<value optimized out>,
args=<value optimized out>, argcount=1, kws=<value optimized out>,
kwcount=2, defs=0x93d8d8, defcount=2, closure=0x0) at
Python/ceval.c:2968
#51 0x00007ffff7d1e8de in fast_function (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:3802
#52 call_function (f=<value optimized out>, throwflag=<value optimized
out>)
at Python/ceval.c:3727
#53 PyEval_EvalFrameEx (f=<value optimized out>,
throwflag=<value optimized out>) at Python/ceval.c:2389
#54 0x00007ffff7d2072c in PyEval_EvalCodeEx (co=0x6da378,
globals=<value optimized out>, locals=<value optimized out>,
args=<value optimized out>, argcount=0, kws=<value optimized out>,
kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:2968
#55 0x00007ffff7d20802 in PyEval_EvalCode (co=<value optimized out>,
globals=<value optimized out>, locals=<value optimized out>)
at Python/ceval.c:522
#56 0x00007ffff7d42600 in run_mod (fp=0x625830,
filename=<value optimized out>, start=<value optimized out>,
globals=0x63c080, locals=0x63c080, closeit=0, flags=0x7fffffffd8b0)
at Python/pythonrun.c:1335
#57 PyRun_FileExFlags (fp=0x625830, filename=<value optimized out>,
start=<value optimized out>, globals=0x63c080, locals=0x63c080,
closeit=0,
flags=0x7fffffffd8b0) at Python/pythonrun.c:1321
#58 0x00007ffff7d430cf in PyRun_SimpleFileExFlags (fp=0x625830,
filename=0x7fffffffeac3 "/home/vbraun/Sage/sage/local/bin/sage-
ipython",
closeit=0, flags=0x7fffffffd8b0) at Python/pythonrun.c:931
#59 0x00007ffff7d5205b in RunStartupFile (argc=<value optimized out>,
argv=0x7fffffffd9d8) at Modules/main.c:142
#60 Py_Main (argc=<value optimized out>, argv=0x7fffffffd9d8)
at Modules/main.c:558
#61 0x000000381a81ee7d in __libc_start_main (main=0x400710 <main>, argc=2,
ubp_av
fini=<value optimized out>, rtld_fini=<value optimized out>,
stack_end=0x7fffffffd9c8) at libc-start.c:226
#62 0x0000000000400649 in _start ()
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10250#comment:11>
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.