#10113: Calling seed() incorrectly causes Sage to crash with SIGSEGV 
(Segmentation
Fault)
----------------------------+-----------------------------------------------
       Reporter:  drkirkby  |         Owner:  jason   
           Type:  defect    |        Status:  new     
       Priority:  major     |     Milestone:  sage-5.0
      Component:  misc      |    Resolution:          
       Keywords:            |   Work issues:          
Report Upstream:  N/A       |     Reviewers:          
        Authors:            |     Merged in:          
   Dependencies:            |      Stopgaps:          
----------------------------+-----------------------------------------------

Comment (by SimonKing):

 The backtrace from the ticket description is not very clear (all those
 question marks). Here is more information:
 {{{
 sage: seed(1,2)

 Program received signal SIGSEGV, Segmentation fault.
 0x00007ffff218ae64 in __gmp_randclear ()
    from
 
/mnt/local/king/SAGE/experiment/notebook/sage-5.1.notebook/local/lib/libgmp.so.8
 (gdb) bt
 #0  0x00007ffff218ae64 in __gmp_randclear ()
    from
 
/mnt/local/king/SAGE/experiment/notebook/sage-5.1.notebook/local/lib/libgmp.so.8
 #1  0x00007ffff260fa79 in
 __pyx_pf_4sage_4misc_9randstate_9randstate_12__dealloc__ (o=0x4891050)
     at sage/misc/randstate.c:3177
 #2  __pyx_tp_dealloc_4sage_4misc_9randstate_randstate (o=0x4891050) at
 sage/misc/randstate.c:3814
 #3  0x00007ffff7ab240c in type_call (type=<value optimized out>,
 args=0x4880878, kwds=0x0)
     at Objects/typeobject.c:738
 #4  0x00007ffff7a4f303 in PyObject_Call (func=0x7ffff28224c0,
 arg=0x7fffffffc370, kw=0x7fffffffc368)
     at Objects/abstract.c:2529
 #5  0x00007ffff7aff2af in do_call (f=0x4978ac0, throwflag=<value optimized
 out>) at Python/ceval.c:4231
 #6  call_function (f=0x4978ac0, throwflag=<value optimized out>) at
 Python/ceval.c:4036
 #7  PyEval_EvalFrameEx (f=0x4978ac0, throwflag=<value optimized out>) at
 Python/ceval.c:2666
 #8  0x00007ffff7b01928 in PyEval_EvalCodeEx (co=0x4820d30, globals=<value
 optimized out>,
     locals=<value optimized out>, args=0x0, argcount=77043152, kws=<value
 optimized out>, kwcount=0,
     defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
 #9  0x00007ffff7b01a42 in PyEval_EvalCode (co=0x4891068,
 globals=0x7fffffffc370, locals=0x7fffffffc368)
     at Python/ceval.c:667
 #10 0x00007ffff7b0065a in exec_statement (f=0x4367090, throwflag=<value
 optimized out>) at Python/ceval.c:4710
 #11 PyEval_EvalFrameEx (f=0x4367090, throwflag=<value optimized out>) at
 Python/ceval.c:1880
 #12 0x00007ffff7b01928 in PyEval_EvalCodeEx (co=0xabaeb0, globals=<value
 optimized out>,
     locals=<value optimized out>, args=0x43669e0, argcount=77043152,
 kws=<value optimized out>, kwcount=0,
     defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
 #13 0x00007ffff7affdf8 in fast_function (f=0x4366840, throwflag=<value
 optimized out>) at Python/ceval.c:4109
 #14 call_function (f=0x4366840, throwflag=<value optimized out>) at
 Python/ceval.c:4034
 #15 PyEval_EvalFrameEx (f=0x4366840, throwflag=<value optimized out>) at
 Python/ceval.c:2666
 #16 0x00007ffff7b01928 in PyEval_EvalCodeEx (co=0xabae30, globals=<value
 optimized out>,
     locals=<value optimized out>, args=0x4, argcount=77043152, kws=<value
 optimized out>, kwcount=0,
     defs=0xb1d260, defcount=2, closure=0x0) at Python/ceval.c:3253
 #17 0x00007ffff7affdf8 in fast_function (f=0x48d1ba0, throwflag=<value
 optimized out>) at Python/ceval.c:4109
 #18 call_function (f=0x48d1ba0, throwflag=<value optimized out>) at
 Python/ceval.c:4034
 #19 PyEval_EvalFrameEx (f=0x48d1ba0, throwflag=<value optimized out>) at
 Python/ceval.c:2666
 #20 0x00007ffff7b0103a in fast_function (f=0xb8e2d0, throwflag=<value
 optimized out>) at Python/ceval.c:4099
 #21 call_function (f=0xb8e2d0, throwflag=<value optimized out>) at
 Python/ceval.c:4034
 #22 PyEval_EvalFrameEx (f=0xb8e2d0, throwflag=<value optimized out>) at
 Python/ceval.c:2666
 #23 0x00007ffff7b01928 in PyEval_EvalCodeEx (co=0xaba9b0, globals=<value
 optimized out>,
     locals=<value optimized out>, args=0xb85508, argcount=77043152,
 kws=<value optimized out>, kwcount=0,
     defs=0xb1e3e8, defcount=1, closure=0x0) at Python/ceval.c:3253
 #24 0x00007ffff7affdf8 in fast_function (f=0xb85380, throwflag=<value
 optimized out>) at Python/ceval.c:4109
 #25 call_function (f=0xb85380, throwflag=<value optimized out>) at
 Python/ceval.c:4034
 #26 PyEval_EvalFrameEx (f=0xb85380, throwflag=<value optimized out>) at
 Python/ceval.c:2666
 #27 0x00007ffff7b01928 in PyEval_EvalCodeEx (co=0xaba530, globals=<value
 optimized out>,
     locals=<value optimized out>, args=0x680a60, argcount=77043152,
 kws=<value optimized out>, kwcount=0,
     defs=0xb1e3a8, defcount=1, closure=0x0) at Python/ceval.c:3253
 #28 0x00007ffff7affdf8 in fast_function (f=0x6808d0, throwflag=<value
 optimized out>) at Python/ceval.c:4109
 #29 call_function (f=0x6808d0, throwflag=<value optimized out>) at
 Python/ceval.c:4034
 #30 PyEval_EvalFrameEx (f=0x6808d0, throwflag=<value optimized out>) at
 Python/ceval.c:2666
 #31 0x00007ffff7b01928 in PyEval_EvalCodeEx (co=0x7ffff7e5b0b0,
 globals=<value optimized out>,
     locals=<value optimized out>, args=0x3, argcount=77043152, kws=<value
 optimized out>, kwcount=2,
     defs=0xa0a800, defcount=2, closure=0x0) at Python/ceval.c:3253
 #32 0x00007ffff7affdf8 in fast_function (f=0x6ec2f0, throwflag=<value
 optimized out>) at Python/ceval.c:4109
 #33 call_function (f=0x6ec2f0, throwflag=<value optimized out>) at
 Python/ceval.c:4034
 #34 PyEval_EvalFrameEx (f=0x6ec2f0, throwflag=<value optimized out>) at
 Python/ceval.c:2666
 #35 0x00007ffff7b01928 in PyEval_EvalCodeEx (co=0x7ffff7f11ab0,
 globals=<value optimized out>,
     locals=<value optimized out>, args=0x0, argcount=77043152, kws=<value
 optimized out>, kwcount=0,
     defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
 #36 0x00007ffff7b01a42 in PyEval_EvalCode (co=0x4891068,
 globals=0x7fffffffc370, locals=0x7fffffffc368)
     at Python/ceval.c:667
 #37 0x00007ffff7b21950 in run_mod (fp=0x6c7e60, filename=<value optimized
 out>, start=<value optimized out>,
     globals=<value optimized out>, locals=0x640260, closeit=0,
 flags=0x7fffffffd560)
     at Python/pythonrun.c:1346
 #38 PyRun_FileExFlags (fp=0x6c7e60, filename=<value optimized out>,
 start=<value optimized out>,
     globals=<value optimized out>, locals=0x640260, closeit=0,
 flags=0x7fffffffd560)
     at Python/pythonrun.c:1332
 #39 0x00007ffff7b21b1c in PyRun_SimpleFileExFlags (fp=<value optimized
 out>,
     filename=0x7fffffffe987
 "/mnt/local/king/SAGE/experiment/notebook/sage-5.1.notebook/local/bin
 /sage-ipython", closeit=0, flags=0x7fffffffd560) at Python/pythonrun.c:936
 #40 0x00007ffff7b3711d in RunStartupFile (argc=<value optimized out>,
 argv=<value optimized out>)
     at Modules/main.c:143
 #41 Py_Main (argc=<value optimized out>, argv=<value optimized out>) at
 Modules/main.c:553
 #42 0x00007ffff6e1dc8d 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=0x7fffffffd678) at libc-
 start.c:228
 #43 0x0000000000400699 in _start ()
 }}}

 So, the latest sage-specific thing is
 `sage.misc.randstate.randstate.__dealloc__`, which does nothing but
 {{{
          gmp_randclear(self.gmp_state)
 }}}

 `self.gmp_state` is initialised in `__init__`. I am surprised: Aren't
 those things supposed to be done in `__cinit__`, so that initialisation of
 the c-data is granted even if Python initialisation fails?

 Anyway, renaming `__init__` into `__cinit__` does not solve the problem.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10113#comment:1>
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