diff --git a/src/calls.h b/src/calls.h index c8685919da..046a632ff7 100644 --- a/src/calls.h +++ b/src/calls.h @@ -45,6 +45,7 @@ #ifndef GAP_CALLS_H #define GAP_CALLS_H +#include "funcs.h" #include "gaputils.h" #include "objects.h" @@ -328,42 +329,66 @@ EXPORT_INLINE int IS_FUNC(Obj obj) */ EXPORT_INLINE Obj CALL_0ARGS(Obj f) { - return HDLR_0ARGS(f)(f); + CheckRecursionBefore(); + Obj o = HDLR_0ARGS(f)(f); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_1ARGS(Obj f, Obj a1) { - return HDLR_1ARGS(f)(f, a1); + CheckRecursionBefore(); + Obj o = HDLR_1ARGS(f)(f, a1); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_2ARGS(Obj f, Obj a1, Obj a2) { - return HDLR_2ARGS(f)(f, a1, a2); + CheckRecursionBefore(); + Obj o = HDLR_2ARGS(f)(f, a1, a2); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_3ARGS(Obj f, Obj a1, Obj a2, Obj a3) { - return HDLR_3ARGS(f)(f, a1, a2, a3); + CheckRecursionBefore(); + Obj o = HDLR_3ARGS(f)(f, a1, a2, a3); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_4ARGS(Obj f, Obj a1, Obj a2, Obj a3, Obj a4) { - return HDLR_4ARGS(f)(f, a1, a2, a3, a4); + CheckRecursionBefore(); + Obj o = HDLR_4ARGS(f)(f, a1, a2, a3, a4); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_5ARGS(Obj f, Obj a1, Obj a2, Obj a3, Obj a4, Obj a5) { - return HDLR_5ARGS(f)(f, a1, a2, a3, a4, a5); + CheckRecursionBefore(); + Obj o = HDLR_5ARGS(f)(f, a1, a2, a3, a4, a5); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_6ARGS(Obj f, Obj a1, Obj a2, Obj a3, Obj a4, Obj a5, Obj a6) { - return HDLR_6ARGS(f)(f, a1, a2, a3, a4, a5, a6); + CheckRecursionBefore(); + Obj o = HDLR_6ARGS(f)(f, a1, a2, a3, a4, a5, a6); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_XARGS(Obj f, Obj as) { - return HDLR_XARGS(f)(f, as); + CheckRecursionBefore(); + Obj o = HDLR_XARGS(f)(f, as); + DecRecursionDepth(); + return o; } @@ -384,42 +409,66 @@ EXPORT_INLINE Obj CALL_XARGS(Obj f, Obj as) */ EXPORT_INLINE Obj CALL_0ARGS_PROF(Obj f) { - return HDLR_0ARGS(PROF_FUNC(f))(f); + CheckRecursionBefore(); + Obj o = HDLR_0ARGS(PROF_FUNC(f))(f); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_1ARGS_PROF(Obj f, Obj a1) { - return HDLR_1ARGS(PROF_FUNC(f))(f, a1); + CheckRecursionBefore(); + Obj o = HDLR_1ARGS(PROF_FUNC(f))(f, a1); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_2ARGS_PROF(Obj f, Obj a1, Obj a2) { - return HDLR_2ARGS(PROF_FUNC(f))(f, a1, a2); + CheckRecursionBefore(); + Obj o = HDLR_2ARGS(PROF_FUNC(f))(f, a1, a2); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_3ARGS_PROF(Obj f, Obj a1, Obj a2, Obj a3) { - return HDLR_3ARGS(PROF_FUNC(f))(f, a1, a2, a3); + CheckRecursionBefore(); + Obj o = HDLR_3ARGS(PROF_FUNC(f))(f, a1, a2, a3); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_4ARGS_PROF(Obj f, Obj a1, Obj a2, Obj a3, Obj a4) { - return HDLR_4ARGS(PROF_FUNC(f))(f, a1, a2, a3, a4); + CheckRecursionBefore(); + Obj o = HDLR_4ARGS(PROF_FUNC(f))(f, a1, a2, a3, a4); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_5ARGS_PROF(Obj f, Obj a1, Obj a2, Obj a3, Obj a4, Obj a5) { - return HDLR_5ARGS(PROF_FUNC(f))(f, a1, a2, a3, a4, a5); + CheckRecursionBefore(); + Obj o = HDLR_5ARGS(PROF_FUNC(f))(f, a1, a2, a3, a4, a5); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_6ARGS_PROF(Obj f, Obj a1, Obj a2, Obj a3, Obj a4, Obj a5, Obj a6) { - return HDLR_6ARGS(PROF_FUNC(f))(f, a1, a2, a3, a4, a5, a6); + CheckRecursionBefore(); + Obj o = HDLR_6ARGS(PROF_FUNC(f))(f, a1, a2, a3, a4, a5, a6); + DecRecursionDepth(); + return o; } EXPORT_INLINE Obj CALL_XARGS_PROF(Obj f, Obj as) { - return HDLR_XARGS(PROF_FUNC(f))(f, as); + CheckRecursionBefore(); + Obj o = HDLR_XARGS(PROF_FUNC(f))(f, as); + DecRecursionDepth(); + return o; } diff --git a/src/funcs.c b/src/funcs.c index 09bdb06090..7ee4622aef 100644 --- a/src/funcs.c +++ b/src/funcs.c @@ -404,14 +404,6 @@ void RecursionDepthTrap( void ) } } -#define CHECK_RECURSION_BEFORE \ - HookedLineIntoFunction(func); \ - CheckRecursionBefore(); - -#define CHECK_RECURSION_AFTER \ - DecRecursionDepth(); \ - HookedLineOutFunction(func); - #ifdef HPCGAP #define REMEMBER_LOCKSTACK() \ @@ -465,7 +457,7 @@ static ALWAYS_INLINE Obj DoExecFunc(Obj func, Int narg, const Obj *arg) { Bag oldLvars; /* old values bag */ Obj result; - CHECK_RECURSION_BEFORE + HookedLineIntoFunction(func); #ifdef HPCGAP REMEMBER_LOCKSTACK(); @@ -489,7 +481,7 @@ static ALWAYS_INLINE Obj DoExecFunc(Obj func, Int narg, const Obj *arg) /* switch back to the old values bag */ SWITCH_TO_OLD_LVARS_AND_FREE( oldLvars ); - CHECK_RECURSION_AFTER + HookedLineOutFunction(func); /* return the result */ return result; @@ -543,7 +535,7 @@ static Obj DoExecFuncXargs(Obj func, Obj args) UInt i; /* loop variable */ Obj result; - CHECK_RECURSION_BEFORE + HookedLineIntoFunction(func); /* check the number of arguments */ len = NARG_FUNC( func ); @@ -574,7 +566,7 @@ static Obj DoExecFuncXargs(Obj func, Obj args) /* switch back to the old values bag */ SWITCH_TO_OLD_LVARS_AND_FREE( oldLvars ); - CHECK_RECURSION_AFTER + HookedLineOutFunction(func); /* return the result */ return result; @@ -589,7 +581,7 @@ static Obj DoPartialUnWrapFunc(Obj func, Obj args) UInt len; Obj argx, result; - CHECK_RECURSION_BEFORE + HookedLineIntoFunction(func); named = ((UInt)-NARG_FUNC(func))-1; len = LEN_PLIST(args); @@ -627,7 +619,7 @@ static Obj DoPartialUnWrapFunc(Obj func, Obj args) /* switch back to the old values bag */ SWITCH_TO_OLD_LVARS_AND_FREE( oldLvars ); - CHECK_RECURSION_AFTER + HookedLineOutFunction(func); /* return the result */ return result; diff --git a/tst/testspecial/stack-depth-func.g b/tst/testspecial/stack-depth-func.g new file mode 100644 index 0000000000..97794de6d0 --- /dev/null +++ b/tst/testspecial/stack-depth-func.g @@ -0,0 +1,2 @@ +f := function() f(); end; +f(); diff --git a/tst/testspecial/stack-depth-func.g.out b/tst/testspecial/stack-depth-func.g.out new file mode 100644 index 0000000000..be940db305 --- /dev/null +++ b/tst/testspecial/stack-depth-func.g.out @@ -0,0 +1,13 @@ +gap> f := function() f(); end; +function( ) ... end +gap> f(); +Error, recursion depth trap (5000) in + f( ); at *stdin*:2 called from +f( ); at *stdin*:2 called from +f( ); at *stdin*:2 called from +f( ); at *stdin*:2 called from +f( ); at *stdin*:2 called from +f( ); at *stdin*:2 called from +... at *stdin*:3 +you may 'return;' +brk> QUIT; diff --git a/tst/testspecial/stack-depth-func2.g b/tst/testspecial/stack-depth-func2.g new file mode 100644 index 0000000000..482cff1763 --- /dev/null +++ b/tst/testspecial/stack-depth-func2.g @@ -0,0 +1,2 @@ +f := function() local x; x := f(); return x; end; +y := f(); diff --git a/tst/testspecial/stack-depth-func2.g.out b/tst/testspecial/stack-depth-func2.g.out new file mode 100644 index 0000000000..fe4e1b46eb --- /dev/null +++ b/tst/testspecial/stack-depth-func2.g.out @@ -0,0 +1,13 @@ +gap> f := function() local x; x := f(); return x; end; +function( ) ... end +gap> y := f(); +Error, recursion depth trap (5000) in + f( ) at *stdin*:2 called from +f( ) at *stdin*:2 called from +f( ) at *stdin*:2 called from +f( ) at *stdin*:2 called from +f( ) at *stdin*:2 called from +f( ) at *stdin*:2 called from +... at *stdin*:3 +you may 'return;' +brk> QUIT; diff --git a/tst/testspecial/stack-depth-list.g b/tst/testspecial/stack-depth-list.g new file mode 100644 index 0000000000..988a805682 --- /dev/null +++ b/tst/testspecial/stack-depth-list.g @@ -0,0 +1,3 @@ +l := []; for i in [1..10000] do l := [l]; od; +Print(l); +String(l); diff --git a/tst/testspecial/stack-depth-list.g.out b/tst/testspecial/stack-depth-list.g.out new file mode 100644 index 0000000000..7179d7e6d2 --- /dev/null +++ b/tst/testspecial/stack-depth-list.g.out @@ -0,0 +1,23 @@ +gap> l := []; for i in [1..10000] do l := [l]; od; +[ ] +gap> Print(l); +[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ \ +[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ \ +[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ + \ +printing stopped, too many recursion levels! + \ + ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]\ + ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]\ + ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] +gap> String(l); +Error, recursion depth trap (5000) in + IsString( obj ) at GAPROOT/lib/string.g:292 called from +IsEmptyString( list ) at GAPROOT/lib/list.gi:306 called from +String( list[i] ) at GAPROOT/lib/list.gi:319 called from +String( list[i] ) at GAPROOT/lib/list.gi:319 called from +String( list[i] ) at GAPROOT/lib/list.gi:319 called from +String( list[i] ) at GAPROOT/lib/list.gi:319 called from +... at *stdin*:4 +you may 'return;' +brk> QUIT; diff --git a/tst/testspecial/stack-depth-operation.g b/tst/testspecial/stack-depth-operation.g new file mode 100644 index 0000000000..35ea308d7f --- /dev/null +++ b/tst/testspecial/stack-depth-operation.g @@ -0,0 +1,3 @@ +DeclareAttribute("XXX",IsGroup); +InstallMethod(XXX,[IsGroup],XXX); +XXX(SymmetricGroup(5)); diff --git a/tst/testspecial/stack-depth-operation.g.out b/tst/testspecial/stack-depth-operation.g.out new file mode 100644 index 0000000000..6b0ffec890 --- /dev/null +++ b/tst/testspecial/stack-depth-operation.g.out @@ -0,0 +1,7 @@ +gap> DeclareAttribute("XXX",IsGroup); +gap> InstallMethod(XXX,[IsGroup],XXX); +gap> XXX(SymmetricGroup(5)); +Error, recursion depth trap (5000) +not in any function at *stdin*:4 +you may 'return;' +brk> QUIT; diff --git a/tst/testspecial/stack-depth-rec.g b/tst/testspecial/stack-depth-rec.g new file mode 100644 index 0000000000..241991f9c6 --- /dev/null +++ b/tst/testspecial/stack-depth-rec.g @@ -0,0 +1,3 @@ +r := rec(); for i in [1..10000] do r := rec(a := r); od; +Print(r); +String(r); diff --git a/tst/testspecial/stack-depth-rec.g.out b/tst/testspecial/stack-depth-rec.g.out new file mode 100644 index 0000000000..87d9ea7ed5 --- /dev/null +++ b/tst/testspecial/stack-depth-rec.g.out @@ -0,0 +1,1870 @@ +gap> r := rec(); for i in [1..10000] do r := rec(a := r); od; +rec( ) +gap> Print(r); +rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := rec( + a := + rec( + a :=\ + rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := rec( + \ +a := + \ +printing stopped, too many recursion levels! + \ + ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )\ + ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )\ + ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) +gap> String(r); +Error, recursion depth trap (5000) in + RecNames( record ) at GAPROOT/lib/record.gi:84 called from +String( record.(nam) ) at GAPROOT/lib/record.gi:99 called from +String( record.(nam) ) at GAPROOT/lib/record.gi:99 called from +String( record.(nam) ) at GAPROOT/lib/record.gi:99 called from +String( record.(nam) ) at GAPROOT/lib/record.gi:99 called from +String( record.(nam) ) at GAPROOT/lib/record.gi:99 called from +... at *stdin*:4 +you may 'return;' +brk> QUIT;