#9678: Rewrite interrupt handling
------------------------------+---------------------------------------------
   Reporter:  jdemeyer        |       Owner:  tba                        
       Type:  task            |      Status:  new                        
   Priority:  major           |   Milestone:  sage-feature               
  Component:  c_lib           |    Keywords:  interrupt, error, c, cython
     Author:  Jeroen Demeyer  |    Upstream:  N/A                        
   Reviewer:                  |      Merged:                             
Work_issues:                  |  
------------------------------+---------------------------------------------
Description changed by jdemeyer:

Old description:

> There are lots of things to be improved in the interrupt handling
> routines in c_lib/src/interrupt.c and c_lib/include/interrupt.h.
>
> Major changes planned:
>  * using {{{setjmp()}}} instead of {{{sigsetjmp()}}}.  This is about a
> factor 20 faster on my x86_64 Linux box.
>  * DONE: using {{{sigaction()}}} instead of {{{signal()}}} since that has
> more well-defined semantics.
>  * DONE: allow {{{_sig_on}}} and {{{_sig_off}}} to be stacked.
>  * have an interface for more general errors which are not signals.
>  * DONE: clean up old, unused code.
>  * Testing interrupt handling: #10030.
>  * Fix breakage because of this patch: #10061.
>  * Documentation: #10109.
>  * Allow to temporarily suspend interrupts and do this in
> {{{sage_malloc()}}} and friends (an interrupt during {{{malloc()}}} will
> mess up the heap, this happens sometimes with a "fixed"  #9564!)
>
> Other related tickets:
>  * #800 (make _sig_on and _sig_off faster when stacked)
>  * #9640 (Change PARI error catching mechanism)
>  * #9564 (libsingular exponentiation can not be interrupted)
>  * #7879 (Remove unnecessary signal handling for low prec mpfr
> operations) --- hopefully {{{_sig_on}}} and {{{_sig_off}}} can be made
> very fast such that this shouldn't be an issue anymore.
>  * #10018 (Unhandled SIGSEGV after bnfcertify())
>  * #7794 ({{{PolynomialRing_integral_domain}}} ignores Ctrl-C and
> segfaults)
>  * #5313 (patch singular so that when it runs out of memory the error
> message says "singular" in it)
>  * #3423 (Make Pari error messages more informative)

New description:

 There are lots of things to be improved in the interrupt handling routines
 in c_lib/src/interrupt.c and c_lib/include/interrupt.h.

 Major changes planned:
  * make {{{_sig_on()}}} an inline function instead of a macro, see #10115
 for the syntax changes.
  * using {{{setjmp()}}} instead of {{{sigsetjmp()}}}.  This is about a
 factor 20 faster on my x86_64 Linux box.
  * DONE: using {{{sigaction()}}} instead of {{{signal()}}} since that has
 more well-defined semantics.
  * DONE: allow {{{_sig_on}}} and {{{_sig_off}}} to be stacked.
  * have an interface for more general errors which are not signals.
  * DONE: clean up old, unused code.
  * Testing interrupt handling: #10030.
  * Fix breakage because of this patch: #10061.
  * Documentation: #10109.
  * Allow to temporarily suspend interrupts and do this in
 {{{sage_malloc()}}} and friends (an interrupt during {{{malloc()}}} will
 mess up the heap, this happens sometimes with a "fixed"  #9564!)

 Other related tickets:
  * #800 (make _sig_on and _sig_off faster when stacked)
  * #9640 (Change PARI error catching mechanism)
  * #9564 (libsingular exponentiation can not be interrupted)
  * #7879 (Remove unnecessary signal handling for low prec mpfr operations)
 --- hopefully {{{_sig_on}}} and {{{_sig_off}}} can be made very fast such
 that this shouldn't be an issue anymore.
  * #10018 (Unhandled SIGSEGV after bnfcertify())
  * #7794 ({{{PolynomialRing_integral_domain}}} ignores Ctrl-C and
 segfaults)
  * #5313 (patch singular so that when it runs out of memory the error
 message says "singular" in it)
  * #3423 (Make Pari error messages more informative)

--

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