#13883: Fix an assertion in polybori
-------------------------------------------------------+--------------------
Reporter: SimonKing | Owner: malb
Type: defect | Status:
needs_review
Priority: major | Milestone:
sage-5.6
Component: commutative algebra | Resolution:
Keywords: polybori FGLMStrategy debug | Work issues:
Report Upstream: Reported upstream. No feedback yet. | Reviewers:
Authors: AlexanderDreyer | Merged in:
Dependencies: | Stopgaps:
-------------------------------------------------------+--------------------
Description changed by AlexanderDreyer:
Old description:
> The following crash occurs in Sage's debug version of #13864:
> {{{
> sage: from polybori import *
> sage: B.<x,y,z> = BooleanPolynomialRing()
> sage: x > y > z
> True
> sage: old_ring = B
> sage: B._change_ordering(dp_asc)
> sage: x > y > z
> False
> sage: z > y > x
> True
> sage: new_ring = B.clone(ordering=lp)
> sage: ideal = BooleanPolynomialVector([x+z, y+z])
> sage: FGLMStrategy(old_ring, new_ring, ideal)
> python: groebner/include/polybori/groebner/PolyEntryVector.h:74: virtual
> void polybori::groebner::PolyEntryVector::append(const
> polybori::groebner::PolyEntry&): Assertion
> `m_indices.checked(back().lead) == (size_type)-1' failed.
> }}}
> The gdb backtrace is as follows:
> {{{
> #0 0x00007ffff6d95d95 in raise () from /lib64/libc.so.6
> #1 0x00007ffff6d972ab in abort () from /lib64/libc.so.6
> #2 0x00007ffff6d8e8fe in __assert_fail_base () from /lib64/libc.so.6
> #3 0x00007ffff6d8e9a2 in __assert_fail () from /lib64/libc.so.6
> #4 0x00007fffd0bfa073 in
> polybori::groebner::PolyEntryVector::append(polybori::groebner::PolyEntry
> const&) [clone .part.506] ()
> from
> /home/simon/SAGE/debug/sage-5.6.beta1/local/lib/libpolybori_groebner-0.8.2.so.0
> #5 0x00007fffd0c165b9 in
> polybori::groebner::FGLMStrategy::FGLMStrategy(polybori::BoolePolyRing
> const&, polybori::BoolePolyRing const&,
> std::vector<polybori::BoolePolynomial,
> std::allocator<polybori::BoolePolynomial> > const&) () from
> /home/simon/SAGE/debug/sage-5.6.beta1/local/lib/libpolybori_groebner-0.8.2.so.0
> #6 0x00007fffd15378b7 in
> WrappedPtr<polybori::groebner::FGLMStrategy>::WrappedPtr<polybori::BoolePolyRing,
> polybori::BoolePolyRing, std::vector<polybori::BoolePolynomial> >
> (this=0x7fffffffa740,
> arg1=..., arg2=..., arg3=...) at
> /home/simon/SAGE/debug/sage-5.6.beta1/local/include/csage/pb_wrap.h:197
> #7 0x00007fffd14dbc5e in
> __pyx_pf_4sage_5rings_10polynomial_5pbori_12FGLMStrategy___init__
> (__pyx_v_self=0x7fffc270dee8, __pyx_v_from_ring=0x2f412b0,
> __pyx_v_to_ring=0x2f69200,
> __pyx_v_vec=0x7fffc26f7760) at sage/rings/polynomial/pbori.cpp:39777
> #8 0x00007fffd14dae26 in
> __pyx_pw_4sage_5rings_10polynomial_5pbori_12FGLMStrategy_1__init__
> (__pyx_v_self=0x7fffc270dee8, __pyx_args=0x7ffff237bb60, __pyx_kwds=0x0)
> at sage/rings/polynomial/pbori.cpp:39568
> #9 0x00007ffff7a4c0dd in type_call (type=0x7fffd17b8c20
> <__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
> args=0x7ffff237bb60, kwds=0x0) at Objects/typeobject.c:737
> #10 0x00007ffff79be33e in PyObject_Call (func=0x7fffd17b8c20
> <__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
> arg=0x7ffff237bb60, kw=0x0) at Objects/abstract.c:2529
> #11 0x00007ffff7ac7a58 in do_call (func=0x7fffd17b8c20
> <__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
> pp_stack=0x7fffffffaaa0, na=3, nk=0) at Python/ceval.c:4239
> #12 0x00007ffff7ac6d92 in call_function (pp_stack=0x7fffffffaaa0,
> oparg=3) at Python/ceval.c:4044
> #13 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x2f6d0f0, throwflag=0)
> at Python/ceval.c:2666
> #14 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7fffc2747930,
> globals=0x9b0080, locals=0x9b0080, args=0x0, argcount=0, kws=0x0,
> kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
> #15 0x00007ffff7ab9a88 in PyEval_EvalCode (co=0x7fffc2747930,
> globals=0x9b0080, locals=0x9b0080) at Python/ceval.c:667
> #16 0x00007ffff7ac9693 in exec_statement (f=0x297f250,
> prog=0x7fffc2747930, globals=0x9b0080, locals=0x9b0080) at
> Python/ceval.c:4718
> #17 0x00007ffff7abde26 in PyEval_EvalFrameEx (f=0x297f250, throwflag=0)
> at Python/ceval.c:1880
> #18 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280c720,
> globals=0x909bf0, locals=0x0, args=0x297eae0, argcount=2, kws=0x297eaf0,
> kwcount=0, defs=0x0, defcount=0, closure=0x0)
> at Python/ceval.c:3253
> #19 0x00007ffff7ac71b5 in fast_function (func=0x7ffff235b450,
> pp_stack=0x7fffffffb420, n=2, na=2, nk=0) at Python/ceval.c:4117
> #20 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffb420,
> oparg=1) at Python/ceval.c:4042
> #21 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x297e930, throwflag=0)
> at Python/ceval.c:2666
> #22 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280c5c0,
> globals=0x909bf0, locals=0x0, args=0x2f06e38, argcount=3, kws=0x2f06e50,
> kwcount=0, defs=0x7ffff2354f10, defcount=2, closure=0x0)
> at Python/ceval.c:3253
> #23 0x00007ffff7ac71b5 in fast_function (func=0x7ffff235b3a8,
> pp_stack=0x7fffffffb910, n=3, na=3, nk=0) at Python/ceval.c:4117
> #24 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffb910,
> oparg=2) at Python/ceval.c:4042
> #25 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x2f06c90, throwflag=0)
> at Python/ceval.c:2666
> #26 0x00007ffff7ac708a in fast_function (func=0x7ffff235b4f8,
> pp_stack=0x7fffffffbc90, n=2, na=2, nk=0) at Python/ceval.c:4107
> #27 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffbc90,
> oparg=1) at Python/ceval.c:4042
> #28 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9c6fb0, throwflag=0) at
> Python/ceval.c:2666
> #29 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280a9e0,
> globals=0x909bf0, locals=0x0, args=0x9bd3b8, argcount=2, kws=0x9bd3c8,
> kwcount=0, defs=0x7ffff235a1d8, defcount=1, closure=0x0)
> at Python/ceval.c:3253
> #30 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2359e28,
> pp_stack=0x7fffffffc180, n=2, na=2, nk=0) at Python/ceval.c:4117
> #31 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffc180,
> oparg=1) at Python/ceval.c:4042
> #32 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9bd220, throwflag=0) at
> Python/ceval.c:2666
> #33 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff2806f60,
> globals=0x909bf0, locals=0x0, args=0x9cc360, argcount=2, kws=0x9cc370,
> kwcount=0, defs=0x7ffff235a168, defcount=1, closure=0x0)
> at Python/ceval.c:3253
> #34 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2359a38,
> pp_stack=0x7fffffffc670, n=2, na=2, nk=0) at Python/ceval.c:4117
> #35 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffc670,
> oparg=1) at Python/ceval.c:4042
> #36 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9cc1c0, throwflag=0) at
> Python/ceval.c:2666
> #37 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff6a9b510,
> globals=0x707970, locals=0x0, args=0x6f6f58, argcount=1, kws=0x6f6f60,
> kwcount=2, defs=0x7ffff2ea5b50, defcount=2, closure=0x0)
> at Python/ceval.c:3253
> #38 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2367450,
> pp_stack=0x7fffffffcb60, n=5, na=1, nk=2) at Python/ceval.c:4117
> #39 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffcb60,
> oparg=512) at Python/ceval.c:4042
> #40 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x6f6dd0, throwflag=0) at
> Python/ceval.c:2666
> #41 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff7e2f1a0,
> globals=0x644f50, locals=0x644f50, args=0x0, argcount=0, kws=0x0,
> kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
> #42 0x00007ffff7ab9a88 in PyEval_EvalCode (co=0x7ffff7e2f1a0,
> globals=0x644f50, locals=0x644f50) at Python/ceval.c:667
> #43 0x00007ffff7af836d in run_mod (mod=0x6e8c18, filename=0x7fffffffd88f
> "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin/sage-ipython",
> globals=0x644f50, locals=0x644f50, flags=0x7fffffffd090,
> arena=0x62d530) at Python/pythonrun.c:1347
> #44 0x00007ffff7af82f3 in PyRun_FileExFlags (fp=0x6451e0,
> filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
> /sage-ipython", start=257, globals=0x644f50, locals=0x644f50,
> closeit=1, flags=0x7fffffffd090) at Python/pythonrun.c:1333
> #45 0x00007ffff7af6aa0 in PyRun_SimpleFileExFlags (fp=0x6451e0,
> filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
> /sage-ipython", closeit=1, flags=0x7fffffffd090)
> at Python/pythonrun.c:937
> #46 0x00007ffff7af6092 in PyRun_AnyFileExFlags (fp=0x6451e0,
> filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
> /sage-ipython", closeit=1, flags=0x7fffffffd090)
> at Python/pythonrun.c:741
> #47 0x00007ffff7b12536 in Py_Main (argc=3, argv=0x7fffffffd218) at
> Modules/main.c:639
> #48 0x00000000004007b4 in main (argc=3, argv=0x7fffffffd218) at
> ./Modules/python.c:23
> }}}
>
> *Apply:* Attach:FGLMStrategy_sigon.patch
> *Install:*
> http://boxen.math.washington.edu/home/dreyer/spkg/polybori-0.8.2.p0.spkg
New description:
The following crash occurs in Sage's debug version of #13864:
{{{
sage: from polybori import *
sage: B.<x,y,z> = BooleanPolynomialRing()
sage: x > y > z
True
sage: old_ring = B
sage: B._change_ordering(dp_asc)
sage: x > y > z
False
sage: z > y > x
True
sage: new_ring = B.clone(ordering=lp)
sage: ideal = BooleanPolynomialVector([x+z, y+z])
sage: FGLMStrategy(old_ring, new_ring, ideal)
python: groebner/include/polybori/groebner/PolyEntryVector.h:74: virtual
void polybori::groebner::PolyEntryVector::append(const
polybori::groebner::PolyEntry&): Assertion `m_indices.checked(back().lead)
== (size_type)-1' failed.
}}}
The gdb backtrace is as follows:
{{{
#0 0x00007ffff6d95d95 in raise () from /lib64/libc.so.6
#1 0x00007ffff6d972ab in abort () from /lib64/libc.so.6
#2 0x00007ffff6d8e8fe in __assert_fail_base () from /lib64/libc.so.6
#3 0x00007ffff6d8e9a2 in __assert_fail () from /lib64/libc.so.6
#4 0x00007fffd0bfa073 in
polybori::groebner::PolyEntryVector::append(polybori::groebner::PolyEntry
const&) [clone .part.506] ()
from
/home/simon/SAGE/debug/sage-5.6.beta1/local/lib/libpolybori_groebner-0.8.2.so.0
#5 0x00007fffd0c165b9 in
polybori::groebner::FGLMStrategy::FGLMStrategy(polybori::BoolePolyRing
const&, polybori::BoolePolyRing const&,
std::vector<polybori::BoolePolynomial,
std::allocator<polybori::BoolePolynomial> > const&) () from
/home/simon/SAGE/debug/sage-5.6.beta1/local/lib/libpolybori_groebner-0.8.2.so.0
#6 0x00007fffd15378b7 in
WrappedPtr<polybori::groebner::FGLMStrategy>::WrappedPtr<polybori::BoolePolyRing,
polybori::BoolePolyRing, std::vector<polybori::BoolePolynomial> >
(this=0x7fffffffa740,
arg1=..., arg2=..., arg3=...) at
/home/simon/SAGE/debug/sage-5.6.beta1/local/include/csage/pb_wrap.h:197
#7 0x00007fffd14dbc5e in
__pyx_pf_4sage_5rings_10polynomial_5pbori_12FGLMStrategy___init__
(__pyx_v_self=0x7fffc270dee8, __pyx_v_from_ring=0x2f412b0,
__pyx_v_to_ring=0x2f69200,
__pyx_v_vec=0x7fffc26f7760) at sage/rings/polynomial/pbori.cpp:39777
#8 0x00007fffd14dae26 in
__pyx_pw_4sage_5rings_10polynomial_5pbori_12FGLMStrategy_1__init__
(__pyx_v_self=0x7fffc270dee8, __pyx_args=0x7ffff237bb60, __pyx_kwds=0x0)
at sage/rings/polynomial/pbori.cpp:39568
#9 0x00007ffff7a4c0dd in type_call (type=0x7fffd17b8c20
<__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
args=0x7ffff237bb60, kwds=0x0) at Objects/typeobject.c:737
#10 0x00007ffff79be33e in PyObject_Call (func=0x7fffd17b8c20
<__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
arg=0x7ffff237bb60, kw=0x0) at Objects/abstract.c:2529
#11 0x00007ffff7ac7a58 in do_call (func=0x7fffd17b8c20
<__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
pp_stack=0x7fffffffaaa0, na=3, nk=0) at Python/ceval.c:4239
#12 0x00007ffff7ac6d92 in call_function (pp_stack=0x7fffffffaaa0, oparg=3)
at Python/ceval.c:4044
#13 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x2f6d0f0, throwflag=0) at
Python/ceval.c:2666
#14 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7fffc2747930,
globals=0x9b0080, locals=0x9b0080, args=0x0, argcount=0, kws=0x0,
kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
#15 0x00007ffff7ab9a88 in PyEval_EvalCode (co=0x7fffc2747930,
globals=0x9b0080, locals=0x9b0080) at Python/ceval.c:667
#16 0x00007ffff7ac9693 in exec_statement (f=0x297f250,
prog=0x7fffc2747930, globals=0x9b0080, locals=0x9b0080) at
Python/ceval.c:4718
#17 0x00007ffff7abde26 in PyEval_EvalFrameEx (f=0x297f250, throwflag=0) at
Python/ceval.c:1880
#18 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280c720,
globals=0x909bf0, locals=0x0, args=0x297eae0, argcount=2, kws=0x297eaf0,
kwcount=0, defs=0x0, defcount=0, closure=0x0)
at Python/ceval.c:3253
#19 0x00007ffff7ac71b5 in fast_function (func=0x7ffff235b450,
pp_stack=0x7fffffffb420, n=2, na=2, nk=0) at Python/ceval.c:4117
#20 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffb420, oparg=1)
at Python/ceval.c:4042
#21 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x297e930, throwflag=0) at
Python/ceval.c:2666
#22 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280c5c0,
globals=0x909bf0, locals=0x0, args=0x2f06e38, argcount=3, kws=0x2f06e50,
kwcount=0, defs=0x7ffff2354f10, defcount=2, closure=0x0)
at Python/ceval.c:3253
#23 0x00007ffff7ac71b5 in fast_function (func=0x7ffff235b3a8,
pp_stack=0x7fffffffb910, n=3, na=3, nk=0) at Python/ceval.c:4117
#24 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffb910, oparg=2)
at Python/ceval.c:4042
#25 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x2f06c90, throwflag=0) at
Python/ceval.c:2666
#26 0x00007ffff7ac708a in fast_function (func=0x7ffff235b4f8,
pp_stack=0x7fffffffbc90, n=2, na=2, nk=0) at Python/ceval.c:4107
#27 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffbc90, oparg=1)
at Python/ceval.c:4042
#28 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9c6fb0, throwflag=0) at
Python/ceval.c:2666
#29 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280a9e0,
globals=0x909bf0, locals=0x0, args=0x9bd3b8, argcount=2, kws=0x9bd3c8,
kwcount=0, defs=0x7ffff235a1d8, defcount=1, closure=0x0)
at Python/ceval.c:3253
#30 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2359e28,
pp_stack=0x7fffffffc180, n=2, na=2, nk=0) at Python/ceval.c:4117
#31 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffc180, oparg=1)
at Python/ceval.c:4042
#32 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9bd220, throwflag=0) at
Python/ceval.c:2666
#33 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff2806f60,
globals=0x909bf0, locals=0x0, args=0x9cc360, argcount=2, kws=0x9cc370,
kwcount=0, defs=0x7ffff235a168, defcount=1, closure=0x0)
at Python/ceval.c:3253
#34 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2359a38,
pp_stack=0x7fffffffc670, n=2, na=2, nk=0) at Python/ceval.c:4117
#35 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffc670, oparg=1)
at Python/ceval.c:4042
#36 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9cc1c0, throwflag=0) at
Python/ceval.c:2666
#37 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff6a9b510,
globals=0x707970, locals=0x0, args=0x6f6f58, argcount=1, kws=0x6f6f60,
kwcount=2, defs=0x7ffff2ea5b50, defcount=2, closure=0x0)
at Python/ceval.c:3253
#38 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2367450,
pp_stack=0x7fffffffcb60, n=5, na=1, nk=2) at Python/ceval.c:4117
#39 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffcb60,
oparg=512) at Python/ceval.c:4042
#40 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x6f6dd0, throwflag=0) at
Python/ceval.c:2666
#41 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff7e2f1a0,
globals=0x644f50, locals=0x644f50, args=0x0, argcount=0, kws=0x0,
kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
#42 0x00007ffff7ab9a88 in PyEval_EvalCode (co=0x7ffff7e2f1a0,
globals=0x644f50, locals=0x644f50) at Python/ceval.c:667
#43 0x00007ffff7af836d in run_mod (mod=0x6e8c18, filename=0x7fffffffd88f
"/home/simon/SAGE/debug/sage-5.6.beta1/local/bin/sage-ipython",
globals=0x644f50, locals=0x644f50, flags=0x7fffffffd090,
arena=0x62d530) at Python/pythonrun.c:1347
#44 0x00007ffff7af82f3 in PyRun_FileExFlags (fp=0x6451e0,
filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
/sage-ipython", start=257, globals=0x644f50, locals=0x644f50,
closeit=1, flags=0x7fffffffd090) at Python/pythonrun.c:1333
#45 0x00007ffff7af6aa0 in PyRun_SimpleFileExFlags (fp=0x6451e0,
filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
/sage-ipython", closeit=1, flags=0x7fffffffd090)
at Python/pythonrun.c:937
#46 0x00007ffff7af6092 in PyRun_AnyFileExFlags (fp=0x6451e0,
filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
/sage-ipython", closeit=1, flags=0x7fffffffd090)
at Python/pythonrun.c:741
#47 0x00007ffff7b12536 in Py_Main (argc=3, argv=0x7fffffffd218) at
Modules/main.c:639
#48 0x00000000004007b4 in main (argc=3, argv=0x7fffffffd218) at
./Modules/python.c:23
}}}
__Apply__
[attachment:FGLMStrategy_sigon.patch]
__Install__
http://boxen.math.washington.edu/home/dreyer/spkg/polybori-0.8.2.p0.spkg
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13883#comment:18>
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.