39 views

Skip to first unread message

Apr 15, 2015, 12:55:23 PM4/15/15

to sage-s...@googlegroups.com

I'm trying to plot a function involving the gamma function. It's this one:

-(gamma(1/2*k, 1/2*R*k) - gamma(1/2*k))/gamma(1/2*k)

If I try to plot the function with a k value any greater than 40, I get a segfault:

sum( plot( integrated(k=k), (x, 0, 2.5), ymax=1.6, color=color, legend_label='k=%i' % k, figsize=6, aspect_ratio=1.0, ) for k, color in zip( [21, 22, 23, 26, 31, 41], ['blue', 'brown', 'red', 'green', 'black', 'yellow', 'orange'], ) )

/Users/buck/trees/mine/sage/sage: line 134: 12283 Segmentation fault: 11 "$SAGE_ROOT/src/bin/sage" "$@" [I 12:15:10.735 NotebookApp] KernelRestarter: restarting kernel (1/5)

This is extremely similar to the behavior I was getting with the pre-built 6.5 sage, so I think it's an old bug rather than a problem with my build.

In 6.5 there was no output (I suspect the Segmentation Fault message was gobbled somehow), so I never tried to enable / debug a core dump in 6.5.

Inspecting the 6.6 core dump, I see that it used 27528, mostly calling back and forth between two functions.

Smells like stack overflow to me.

(lldb) bt [27503/47384]

* thread #1: tid = 0x0000, 0x0000000103588007 libpython2.7.dylib`vgetargskeywords + 23, stop reason = signal SIGSTOP

* frame #0: 0x0000000103588007 libpython2.7.dylib`vgetargskeywords + 23

frame #1: 0x000000010358890e libpython2.7.dylib`PyArg_ParseTupleAndKeywords + 174

frame #2: 0x000000010356c40e libpython2.7.dylib`builtin___import__ + 94

frame #3: 0x00000001034a377f libpython2.7.dylib`PyObject_CallFunctionObjArgs + 367

frame #4: 0x000000010774c1c4 coerce.so`__Pyx_Import(name=<unavailable>, from_list=0x0000000117da7560, level=<unavailable>) + 180 at coerce.c:

20339

frame #5: 0x000000010774d08e coerce.so`__pyx_f_4sage_9structure_6coerce_py_scalar_parent(__pyx_v_py_type=<unavailable>, __pyx_skip_dispatch=<

unavailable>) + 510 at coerce.c:2938

frame #6: 0x0000000107760318 coerce.so`__pyx_f_4sage_9structure_6coerce_24CoercionModel_cache_maps_canonical_coercion(__pyx_v_self=0x00000001

07648d50, __pyx_v_x=0x00007f8fbfc37238, __pyx_v_y=0x0000000118c5f390, __pyx_skip_dispatch=<unavailable>) + 3128 at coerce.c:9585

frame #7: 0x0000000107763cfe coerce.so`__pyx_pw_4sage_9structure_6coerce_24CoercionModel_cache_maps_25canonical_coercion + 13 at coerce.c:105

64

frame #8: 0x0000000107763cf1 coerce.so`__pyx_pw_4sage_9structure_6coerce_24CoercionModel_cache_maps_25canonical_coercion(__pyx_v_self=0x00000

00107648d50, __pyx_args=0x0000000117e5f248, __pyx_kwds=0x0000000000000000) + 65

frame #9: 0x0000000103574f10 libpython2.7.dylib`PyEval_EvalFrameEx + 26208

frame #10: 0x0000000103575fb0 libpython2.7.dylib`PyEval_EvalCodeEx + 2144

frame #11: 0x00000001034dae0c libpython2.7.dylib`function_call + 124

frame #12: 0x000000010d680381 pynac.so`__Pyx_PyObject_Call(func=0x0000000108f0c410, arg=<unavailable>, kw=PyObject * at scalar) + 65 at pynac

.cpp:26785

frame #13: 0x000000010d6a76e9 pynac.so`py_gcd(__pyx_v_n=0x00007f8fbfc37238, __pyx_v_k=0x0000000118c5f390) + 521 at pynac.cpp:8416

frame #14: 0x000000010d7d0f28 libpynac.1.dylib`GiNaC::gcd(GiNaC::numeric const&, GiNaC::numeric const&) + 56

frame #15: 0x000000010d7ad100 libpynac.1.dylib`GiNaC::add::integer_content() const + 496

frame #16: 0x000000010d7acef0 libpynac.1.dylib`GiNaC::ex::integer_content() const + 16

frame #17: 0x000000010d79fe01 libpynac.1.dylib`GiNaC::mul::eval(int) const + 1377

frame #18: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #19: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #20: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #21: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #22: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #23: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #24: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #25: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #26: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #27: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #28: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #29: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

...

frame #27502: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #27503: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #27504: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #27505: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #27506: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #27507: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #27508: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #27509: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #27510: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #27511: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #27512: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #27513: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #27514: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #27515: 0x000000010d7a026b libpynac.1.dylib`GiNaC::mul::eval(int) const + 2507

frame #27516: 0x000000010d71ba91 libpynac.1.dylib`GiNaC::ex::construct_from_basic(GiNaC::basic const&) + 113

frame #27517: 0x000000010d7d1ccd libpynac.1.dylib`GiNaC::operator*(GiNaC::ex const&, GiNaC::ex const&) + 77

frame #27518: 0x000000010da76768 expression.so`__pyx_f_4sage_8symbolic_10expression_10Expression__mul_(__pyx_v_left=0x0000000117db6cb0, __pyx_v_right=0x0000000117db6ea8, __pyx_skip_dispatch=<unavailable>) + 2504 at expression.cpp:18109

frame #27519: 0x00000001075bed30 element.so`__pyx_pw_4sage_9structure_7element_11RingElement_11__mul__ + 64 at element.c:17301

frame #27520: 0x00000001075becf0 element.so`__pyx_pw_4sage_9structure_7element_11RingElement_11__mul__(__pyx_v_left=0x0000000117db6cb0, __pyx_v_right=0x0000000117db6ea8) + 14

frame #27521: 0x000000010349ff8b libpython2.7.dylib`PyNumber_Multiply + 187

frame #27522: 0x0000000117bceb47 wrapper_py.so`interp_py(args=0x0000000117dbeda8, constants=0x00007f8fbd980f30, stack=<unavailable>, code=0x00007f8fbd9a8eac) + 519 at interp_py.c:110

frame #27523: 0x0000000117bc1cca wrapper_py.so`__pyx_pw_4sage_3ext_12interpreters_10wrapper_py_10Wrapper_py_5__call__(__pyx_v_self=0x00000001181db380, __pyx_args=0x0000000117dbed90, __pyx_kwds=0x0000000000000000) + 138 at wrapper_py.c:1478

frame #27524: 0x00000001034a2bd3 libpython2.7.dylib`PyObject_Call + 67

frame #27525: 0x00000001035727bd libpython2.7.dylib`PyEval_EvalFrameEx + 16141

frame #27526: 0x0000000103575fb0 libpython2.7.dylib`PyEval_EvalCodeEx + 2144

frame #27527: 0x000000010357513d libpython2.7.dylib`PyEval_EvalFrameEx + 26765

frame #27528: 0x000000010e399354

Apr 15, 2015, 1:04:17 PM4/15/15

to sage-s...@googlegroups.com

NameError: global name 'integrated' is not defined

Apr 15, 2015, 1:56:57 PM4/15/15

to sage-s...@googlegroups.com

It's the function I mentioned:

sage: var('R k')

(R, k)

sage: integrated = -(gamma(1/2*k, 1/2*R*k) - gamma(1/2*k))/gamma(1/2*k)

Apr 15, 2015, 2:04:15 PM4/15/15

to sage-s...@googlegroups.com

Already the following fails

sage: integrated = -(gamma(1/2*k, 1/2*R*k) - gamma(1/2*k))/gamma(1/2*k)

sage: plot(integrated.subs(k=41), (R,0,6))

/home/vincent/bin/sage: line 134: 13683 Segmentation fault

"$SAGE_ROOT/src/bin/sage" "$@"

sage: integrated = -(gamma(1/2*k, 1/2*R*k) - gamma(1/2*k))/gamma(1/2*k)

/home/vincent/bin/sage: line 134: 13683 Segmentation fault

"$SAGE_ROOT/src/bin/sage" "$@"

Apr 15, 2015, 2:08:28 PM4/15/15

to sage-s...@googlegroups.com

More context about this:

I'm here with Buck at PyCon and he said he actually had this line running a few years ago. I don't know anything about this stuff so it's difficult to track what's wrong now.--

You received this message because you are subscribed to the Google Groups "sage-support" group.

To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscribe@googlegroups.com.

To post to this group, send email to sage-s...@googlegroups.com.

Visit this group at http://groups.google.com/group/sage-support.

For more options, visit https://groups.google.com/d/optout.

Apr 15, 2015, 2:09:40 PM4/15/15

to sage-s...@googlegroups.com

Apr 15, 2015, 2:12:28 PM4/15/15

to sage-s...@googlegroups.com

I'll do it, but I was hopping to get more context about it, also checking if it wasn't known somewhere.

To post to this group, send email to sage-s...@googlegroups.com.

Visit this group at http://groups.google.com/group/sage-support.

For more options, visit https://groups.google.com/d/optout.

--

You received this message because you are subscribed to the Google Groups "sage-support" group.

To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscribe@googlegroups.com.

Apr 15, 2015, 2:28:07 PM4/15/15

to sage-s...@googlegroups.com

Ok, just did it. I'm not sure who to CC on this.

BestApr 15, 2015, 2:29:59 PM4/15/15

to sage-s...@googlegroups.com

For the bug report:

sage: a = 319830986772877770815625*sqrt(pi)

sage: b = 1048576*gamma(41/2, 41/2*x)

sage: f = a - b

sage: plot(f, (R,0,1)) # works fine

sage: plot(f / sqrt(pi), (R,0,1)) # BOOM

Vincent

>>>> email to sage-support...@googlegroups.com.

sage: a = 319830986772877770815625*sqrt(pi)

sage: b = 1048576*gamma(41/2, 41/2*x)

sage: f = a - b

sage: plot(f, (R,0,1)) # works fine

sage: plot(f / sqrt(pi), (R,0,1)) # BOOM

Vincent

>>>> To post to this group, send email to sage-s...@googlegroups.com.

>>>> Visit this group at http://groups.google.com/group/sage-support.

>>>> For more options, visit https://groups.google.com/d/optout.

>>>>

>>>>

>>>

>> --

>> You received this message because you are subscribed to the Google Groups

>> "sage-support" group.

>> To unsubscribe from this group and stop receiving emails from it, send an

>> email to sage-support...@googlegroups.com.
>>>> Visit this group at http://groups.google.com/group/sage-support.

>>>> For more options, visit https://groups.google.com/d/optout.

>>>>

>>>>

>>>

>> --

>> You received this message because you are subscribed to the Google Groups

>> "sage-support" group.

>> To unsubscribe from this group and stop receiving emails from it, send an

Apr 15, 2015, 2:30:25 PM4/15/15

to sage-s...@googlegroups.com

The segfault is the stack smashed by a ginac infinite recursion, of course.

On Wednesday, April 15, 2015 at 6:55:23 PM UTC+2, Buck Evan wrote:

Apr 15, 2015, 2:31:03 PM4/15/15

to sage-s...@googlegroups.com

I would send a message to sage-devel with the ticket number... and you

could also specify it for the readers of this thread.

>>>>> email to sage-support...@googlegroups.com.

could also specify it for the readers of this thread.

>>>>> To post to this group, send email to sage-s...@googlegroups.com.

>>>>> Visit this group at http://groups.google.com/group/sage-support.

>>>>> For more options, visit https://groups.google.com/d/optout.

>>>>>

>>>>>

>>>>

>>> --

>>> You received this message because you are subscribed to the Google Groups

>>> "sage-support" group.

>>> To unsubscribe from this group and stop receiving emails from it, send an

>>> email to sage-support...@googlegroups.com.
>>>>> Visit this group at http://groups.google.com/group/sage-support.

>>>>> For more options, visit https://groups.google.com/d/optout.

>>>>>

>>>>>

>>>>

>>> --

>>> You received this message because you are subscribed to the Google Groups

>>> "sage-support" group.

>>> To unsubscribe from this group and stop receiving emails from it, send an

Apr 15, 2015, 2:32:11 PM4/15/15

to sage-s...@googlegroups.com

Will do

To post to this group, send email to sage-s...@googlegroups.com.

Visit this group at http://groups.google.com/group/sage-support.

For more options, visit https://groups.google.com/d/optout.

--

You received this message because you are subscribed to the Google Groups

"sage-support" group.

To unsubscribe from this group and stop receiving emails from it, send an

To post to this group, send email to sage-s...@googlegroups.com.

Visit this group at http://groups.google.com/group/sage-support.

For more options, visit https://groups.google.com/d/optout.

--

You received this message because you are subscribed to the Google Groups "sage-support" group.

To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscribe@googlegroups.com.

Apr 15, 2015, 2:37:16 PM4/15/15

to sage-s...@googlegroups.com

It's http://trac.sagemath.org/ticket/18210

We also found that the plot succeeds for 40 and 42 but not 41.

I believe this is because the symbolic form for 40 and 42 are different and simpler than 41:

sage: var('R k')

(R, k)

sage: integrated = -(gamma(1/2*k, 1/2*R*k) - gamma(1/2*k))/gamma(1/2*k)

sage: plot(integrated(k=41.0), (R, 0, .001))

Launched png viewer for Graphics object consisting of 1 graphics primitive

sage: integrated(k=40)

-1/121645100408832000*gamma(20, 20*R) + 1

sage: integrated(k=41)

1/319830986772877770815625*(319830986772877770815625*sqrt(pi) - 1048576*gamma(41/2, 41/2*R))/sqrt(pi)

sage: integrated(k=42)

-1/2432902008176640000*gamma(21, 21*R) + 1

--

You received this message because you are subscribed to a topic in the Google Groups "sage-support" group.

To unsubscribe from this topic, visit https://groups.google.com/d/topic/sage-support/7ex6McLE7AA/unsubscribe.

To unsubscribe from this group and all its topics, send an email to sage-support...@googlegroups.com.

Apr 15, 2015, 2:44:28 PM4/15/15

to sage-s...@googlegroups.com

41 is odd. What about 43,44,45?

>>>>>>>>> frame #10: 0x0000000103575fb0 libpython2.7.dylib`PyEval_

>>>>>>>>> EvalCodeEx

>>>>>>>>> +

>>>>>>>>> 2144

>>>>>>>>> frame #11: 0x00000001034dae0c libpython2.7.dylib`function_

>>>>>>>>> call

>>>>>>>>> EvalCodeEx

>>>>>>>>> +

>>>>>>>>> 2144

>>>>>>>>> frame #11: 0x00000001034dae0c libpython2.7.dylib`function_

>>>>>>>>> call

>>>>>>>> email to sage-support...@googlegroups.com.

>>>>>>>> To post to this group, send email to sage-s...@googlegroups.com.

>>>>>>>> Visit this group at http://groups.google.com/group/sage-support.

>>>>>>>> For more options, visit https://groups.google.com/d/optout.

>>>>>>>>

>>>>>>>>

>>>>>>>>

>>>>>>>> To post to this group, send email to sage-s...@googlegroups.com.

>>>>>>>> Visit this group at http://groups.google.com/group/sage-support.

>>>>>>>> For more options, visit https://groups.google.com/d/optout.

>>>>>>>>

>>>>>>>>

>>>>>>>>

>>>>>>> --

>>>>>> You received this message because you are subscribed to the Google

>>>>>> Groups

>>>>>> "sage-support" group.

>>>>>> To unsubscribe from this group and stop receiving emails from it, send

>>>>>> an

>>>>>> You received this message because you are subscribed to the Google

>>>>>> Groups

>>>>>> "sage-support" group.

>>>>>> To unsubscribe from this group and stop receiving emails from it, send

>>>>>> an

>>>>>> email to sage-support...@googlegroups.com.

>>>>>> To post to this group, send email to sage-s...@googlegroups.com.

>>>>>> Visit this group at http://groups.google.com/group/sage-support.

>>>>>> For more options, visit https://groups.google.com/d/optout.

>>>>>>

>>>>>>

>>>>>

>>>>>

>>>>

>>>>>> To post to this group, send email to sage-s...@googlegroups.com.

>>>>>> Visit this group at http://groups.google.com/group/sage-support.

>>>>>> For more options, visit https://groups.google.com/d/optout.

>>>>>>

>>>>>>

>>>>>

>>>>>

>>>>

>>> --

>>> You received this message because you are subscribed to the Google Groups

>>> "sage-support" group.

>>> To unsubscribe from this group and stop receiving emails from it, send an

>>> You received this message because you are subscribed to the Google Groups

>>> "sage-support" group.

>>> To unsubscribe from this group and stop receiving emails from it, send an

Apr 15, 2015, 2:46:36 PM4/15/15

to sage-s...@googlegroups.com

Similarly, the evens succeed, the odds segfault.

The main difference seems to be the `/sqrt(pi)` as you (Vincent) indicated.

To post to this group, send email to sage-s...@googlegroups.com.

Visit this group at http://groups.google.com/group/sage-support.

For more options, visit https://groups.google.com/d/optout.

--

You received this message because you are subscribed to the Google

Groups

"sage-support" group.

To unsubscribe from this group and stop receiving emails from it, send

an

To post to this group, send email to sage-s...@googlegroups.com.

Visit this group at http://groups.google.com/group/sage-support.

For more options, visit https://groups.google.com/d/optout.

--

You received this message because you are subscribed to the Google Groups

"sage-support" group.

To unsubscribe from this group and stop receiving emails from it, send an

To post to this group, send email to sage-s...@googlegroups.com.

Visit this group at http://groups.google.com/group/sage-support.

For more options, visit https://groups.google.com/d/optout.

--

You received this message because you are subscribed to a topic in the

Google Groups "sage-support" group.

To unsubscribe from this topic, visit

https://groups.google.com/d/topic/sage-support/7ex6McLE7AA/unsubscribe.

To unsubscribe from this group and all its topics, send an email to

To post to this group, send email to sage-s...@googlegroups.com.

Visit this group at http://groups.google.com/group/sage-support.

For more options, visit https://groups.google.com/d/optout.

--

You received this message because you are subscribed to a topic in the Google Groups "sage-support" group.

To unsubscribe from this topic, visit https://groups.google.com/d/topic/sage-support/7ex6McLE7AA/unsubscribe.

To unsubscribe from this group and all its topics, send an email to sage-support+unsubscribe@googlegroups.com.

Reply all

Reply to author

Forward

0 new messages