gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Gcl-devel] Windows GCL: setjmp/longjmp


From: Mike Thomas
Subject: RE: [Gcl-devel] Windows GCL: setjmp/longjmp
Date: Wed, 24 Mar 2004 11:00:37 +1000

Hi Camm.

| OK, my next guess is that we've run out of C stack space.  setjmp
| pushes the environment to the C stack.  And these bugs seem to show up
| only after several good iterations.  We need to trap the error in gdb,
| and look at the esp register, cs_org, and cs_limit.  Ideally, we can
| trap right before the error and look at the address of a local C
| variable too.  Perhaps mark_c_stack would be good, with the proper
| number of ignores, which can be determined by running with (setq
| si::*notify-gbc*) first, and either counting the gc's by hand, or
| looking at (room) at the error point.


... Lots elided ...

                  CLASS-DIRECT-DEFAULT-INITARGS CLASS-DIRECT-SUBCLASSES
                  CLASS-DIRECT-SUPERCLASSES
                  SIMPLE-CONDITION-FORMAT-STRING SFUN
                  FIND-METHOD-COMBINATION
                  STANDARD-EFFECTIVE-SLOT-DEFINITION TRUNCATE_USE_C
                  GFUN INTERN-EQL-SPECIALIZER COMMON
                  FORWARD-REFERENCED-CLASS COMPUTE-EFFECTIVE-METHOD
                  COMPUTE-CLASS-PRECEDENCE-LIST SLOT-DEFINITION-TYPE
                  MAP-DEPENDENTS MAKE-CHAR SPECIFIC-CORRECTABLE-ERROR
                  ACCESSOR-METHOD-SLOT-DEFINITION
                  DIRECT-SLOT-DEFINITION SPECIFIC-ERROR
                  WITH-ADDED-METHODS EQL-SPECIALIZER
                  COMPUTE-APPLICABLE-METHODS-USING-CLASSES
                  UPDATE-DEPENDENT STANDARD-READER-METHOD CHAR-FONT
                  *EVALHOOK* METHOD-SPECIALIZERS REMOVE-DIRECT-SUBCLASS
                  GENERIC-FUNCTION-METHOD-CLASS ADD-DIRECT-METHOD
                  COMMONP INT-CHAR SLOT-VALUE-USING-CLASS EVALHOOK
                  METHOD-FUNCTION STANDARD-WRITER-METHOD
                  *BREAK-ON-WARNINGS* STANDARD-INSTANCE CHAR-HYPER-BIT
                  COMPILER-LET MINGW32 CHAR-SUPER-BIT
                  COMPUTE-EFFECTIVE-SLOT-DEFINITION CHAR-BITS
                  CHAR-META-BIT STANDARD-INSTANCE-ACCESS
                  DIRECT-SLOT-DEFINITION-CLASS AKCL
                  GENERIC-FUNCTION-DECLARATIONS
                  EXTRACT-SPECIALIZER-NAMES SLOT-MAKUNBOUND-USING-CLASS
                  EFFECTIVE-SLOT-DEFINITION
                  COMPUTE-DISCRIMINATING-FUNCTION
                  SLOT-DEFINITION-INITARGS DEFINE-SETF-METHOD
                  SPECIALIZER-DIRECT-METHODS ENSURE-CLASS-USING-CLASS
                  MAKE-METHOD-LAMBDA SLOT-BOUNDP-USING-CLASS
                  ENSURE-GENERIC-FUNCTION-USING-CLASS
                  EXTRACT-LAMBDA-LIST CLASS-DEFAULT-INITARGS
                  SPECIALIZER-DIRECT-GENERIC-FUNCTION GET-SETF-METHOD
                  METHOD-LAMBDA-LIST CHAR-FONT-LIMIT CLASS-PROTOTYPE
                  CHAR-BITS-LIMIT
                  GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER
                  STRING-CHAR-P STORAGE-EXHAUSTED READER-METHOD-CLASS
                  CLASS-DIRECT-SLOTS GMP POSITIVE-FIXNUM SPECIAL-FORM-P
                  UNEXEC CHAR-BIT GCL CHAR-CONTROL-BIT
                  SLOT-DEFINITION-WRITERS I386 SET-CHAR-BIT APPLYHOOK
                  SPECIALIZER ADD-DEPENDENT
                  EFFECTIVE-SLOT-DEFINITION-CLASS
                  SLOT-DEFINITION-READERS WRITER-METHOD-CLASS
                  *APPLYHOOK* BROKEN_O4_OPT COMPUTE-SLOTS
                  REMOVE-DIRECT-METHOD ADD-DIRECT-SUBCLASS
                  SLOT-DEFINITION STRING-CHAR STACK-OVERFLOW
                  STANDARD-SLOT-DEFINITION VALIDATE-SUPERCLASS
                  SLOT-DEFINITION-NAME METHOD-GENERIC-FUNCTION).
[GC for 108 STRING pages..
Breakpoint 1, mark_c_stack (env1=0x0, n=2, fn=0x438960
<mark_stack_carefully>)
    at gbc.c:865
865       if (n== N_RECURSION_REQD)
(gdb) info registers
eax            0x0      0
ecx            0x10103fa4       269500324
edx            0x0      0
ebx            0x6c1590 7083408
esp            0x22de00 0x22de00
ebp            0x22de68 0x22de68
esi            0x6c1530 7083312
edi            0x6c156c 7083372
eip            0x438df1 0x438df1
eflags         0x206    518
cs             0x1b     27
ss             0x23     35
ds             0x23     35
es             0x23     35
fs             0x38     56
gs             0x0      0
(gdb) p cs_org
$10 = (int *) 0x22ff88
(gdb) p cs_limit
$11 = (int *) 0x21c708
(gdb) p *cs_org
$12 = 1
(gdb) p *cs_limit
$13 = 269647600
(gdb) n
866         c_stack_where = (long *) (void *) &env;
(gdb) n
867       if (n > 0 ) {
(gdb) n
871         setjmp(env);
(gdb) n
873         mark_c_stack(env,n - 1,fn);
(gdb) p env
$14 = {2285160, 7083408, 7083372, 7083312, 2285036, 4427281, 2293728, 0,
  272539524, 0, 10, 6619245, 0, 12, 7610012, 7610016}
(gdb) p *env
Attempt to take contents of a non-pointer value.
(gdb) info locals
env = {2285160, 7083408, 7083372, 7083312, 2285036, 4427281, 2293728, 0,
  272539524, 0, 10, 6619245, 0, 12, 7610012, 7610016}
where = 14
(gdb) n

Breakpoint 1, mark_c_stack (env1=0x22de10, n=1,
    fn=0x438960 <mark_stack_carefully>) at gbc.c:865
865       if (n== N_RECURSION_REQD)
(gdb) n
867       if (n > 0 ) {
(gdb) n
871         setjmp(env);
(gdb) n
873         mark_c_stack(env,n - 1,fn);
(gdb) p env
$15 = {2285032, 7083408, 7083372, 7083312, 2284908, 4427281, 2293728, 0, 0,
  7083408, 2285016, 4422231, 6625936, 8, 2285080, 4422980}
(gdb) p fn
$16 = (void (*)()) 0x438960 <mark_stack_carefully>
(gdb) n

Breakpoint 1, mark_c_stack (env1=0x22dd90, n=0,
    fn=0x438960 <mark_stack_carefully>) at gbc.c:865
865       if (n== N_RECURSION_REQD)
(gdb) n
867       if (n > 0 ) {
(gdb) n
884         if (&where > cs_org)
(gdb) p where
$17 = 4422980
(gdb) p &where
$18 = (int *) 0x22dd0c
(gdb) p &cs_org
$19 = (int **) 0x651650
(gdb) n
887           (*fn)(cs_org,0,C_GC_OFFSET);}
(gdb) n
903     }
(gdb) n
903     }
(gdb) n
903     }
(gdb) n
mark_phase () at gbc.c:795
795     }
(gdb) n
GBC (t=t_string) at gbc.c:1211
1211      if (debug) {
(gdb) n
1218      if (debug) {
(gdb) n
1229        sweep_phase();
(gdb) n
1231      if (debug) {
(gdb) n
1237      if (t == t_contiguous) {
(gdb) n
1259      if ((int)t >= (int)t_contiguous) {
(gdb) n
1281      if (debug) {
(gdb) n
1305      interrupt_enable = TRUE;
(gdb) n
1312      if (saving_system) {
(gdb) n
1357      if (GBC_exit_hook != NULL)
(gdb) n
1360      if(gc_time>=0 && !--gc_recursive)
{gc_time=gc_time+(gc_start=(runtime(
)-gc_start));}
(gdb) n
1362      if (sSAnotify_gbcA->s.s_dbind != Cnil) {
(gdb) n
1364        if (gc_recursive)
(gdb) n
1367          fprintf(stdout, "(T=%d).GC finished]\n",gc_start);
(gdb) n
1368        fflush(stdout);
(gdb) n
(T=11641).GC finished]
1373      CHECK_INTERRUPT;
(gdb) n
1374    }
(gdb) n
alloc_object (t=t_string) at alloc.c:287
287             if (tm->tm_nfree == 0 ||
(gdb) n
294             if (IGNORE_MAX_PAGES) {
(gdb) n
295                     tm->tm_maxpage =
(gdb) n
298                     call_after_gbc_hook(t);
(gdb) n
299                     goto ONCE_MORE;
(gdb) n
252             tm = tm_of(t);
(gdb) n
254             CHECK_INTERRUPT;
(gdb) n
256             obj = tm->tm_free;
(gdb) n
257             if (obj == OBJNULL) {
(gdb) n
272             tm->tm_free = OBJ_LINK(obj);
(gdb) n
273             --(tm->tm_nfree);
(gdb) n
274             (tm->tm_nused)++;
(gdb) n
275             obj->d.t = (short)t;
(gdb) n
276             obj->d.m = FALSE;
(gdb) n
277             return(obj);
(gdb) n
314     }
(gdb) n
alloc_simple_string (l=8) at string.d:43
43              x->st.st_hasfillp = FALSE;
(gdb) n
44              x->st.st_adjustable = FALSE;
(gdb) n
45              x->st.st_displaced = Cnil;
(gdb) n
46              x->st.st_dim = x->st.st_fillp = l;
(gdb) n
47              x->st.st_self = NULL;
(gdb) n
48              return(x);
(gdb) n
49      }
(gdb) n
symbol_name (x=0x101b9b64) at symbol.d:441
441         vs_push(y);
(gdb) n
442        if (x->s.s_self < heap_end)
(gdb) n
443                     y->st.st_self = x->s.s_self;
(gdb) n
449        x->s.s_plist = putf(x->s.s_plist, y, siSpname);
(gdb) finish
Run till exit from #0  symbol_name (x=0x101b9b64) at symbol.d:449
0x004760d0 in Lsymbol_name () at symbol.d:458
458             vs_base[0]=symbol_name(vs_base[0]);
Value returned is $20 = 0x10e4bfd8
(gdb) finish
Run till exit from #0  0x004760d0 in Lsymbol_name () at symbol.d:458
0x0041f487 in eval (form=0x651a90) at eval.c:1090
1090              (*(x)->cf.cf_self)();
(gdb) finish
Run till exit from #0  0x0041f487 in eval (form=0x651a90) at eval.c:1090
0x0041f40a in eval (form=0x106114d4) at eval.c:1077
1077                    eval(MMcar(form));
(gdb) finish
Run till exit from #0  0x0041f40a in eval (form=0x106114d4) at eval.c:1077
0x004485af in Fmultiple_value_list (form=0x1101e8e8) at multival.c:62
62              eval(MMcar(form));
(gdb) finish
Run till exit from #0  0x004485af in Fmultiple_value_list (form=0x1101e8e8)
    at multival.c:62
0x0041f217 in eval (form=0x1101e8f4) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x1101e8f4) at eval.c:1037
0x004134c8 in letA_bind (body=0x10611210, start=0x6c1638, end=0x6c1668)
    at bind.c:699
699                     eval_assign(bt->bt_init, bt->bt_init);
(gdb) finish
Run till exit from #0  0x004134c8 in letA_bind (body=0x10611210,
    start=0x6c1638, end=0x6c1668) at bind.c:699
0x0043e67f in FletA (form=0x1101e894) at let.c:106
106             body = letA_bind(form->c.c_cdr, start, (struct bind_temp
*)vs_to
p);
Value returned is $21 = 0x10611210
(gdb) finish
Run till exit from #0  0x0043e67f in FletA (form=0x1101e894) at let.c:106
0x0041f217 in eval (form=0x1101e8a0) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x1101e8a0) at eval.c:1037
0x00460b4f in Ftagbody (body=0x1101e888) at prog.c:95
95                              eval(MMcar(body));
(gdb) finish
Run till exit from #0  0x00460b4f in Ftagbody (body=0x1101e888) at prog.c:95
0x0041f217 in eval (form=0x1101e3f0) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x1101e3f0) at eval.c:1037
0x00419928 in Fif (form=0x1101e3d8) at conditional.c:54
54                      eval(MMcadr(form));
(gdb) finish
Run till exit from #0  0x00419928 in Fif (form=0x1101e3d8) at
conditional.c:54
0x0041f217 in eval (form=0x1101e3e4) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x1101e3e4) at eval.c:1037
0x00460b4f in Ftagbody (body=0x1101ddec) at prog.c:95
95                              eval(MMcar(body));
(gdb) finish
Run till exit from #0  0x00460b4f in Ftagbody (body=0x1101ddec) at prog.c:95
 KEYWORD-BEHAVIOR
Test CL-FUNCTION-SYMBOLS.1 failed
Form: (LOOP
        FOR
        S
        IN
        (APPEND *CL-FUNCTION-SYMBOLS* *CL-ACCESSOR-SYMBOLS*)
        WHEN
        (OR (NOT (FBOUNDP S)) (MACRO-FUNCTION S) (SPECIAL-OPERATOR-P S)
            (NOT (SYMBOL-FUNCTION S)))
        COLLECT
        S)
Expected value: NIL
Actual value: (ARITHMETIC-ERROR-OPERANDS BROADCAST-STREAM-STREAMS
                  CELL-ERROR-NAME CONCATENATED-STREAM-STREAMS
                  COPY-PPRINT-DISPATCH ECHO-STREAM-INPUT-STREAM
                  ECHO-STREAM-OUTPUT-STREAM ENSURE-DIRECTORIES-EXIST
                  FILE-STRING-LENGTH FUNCTION-LAMBDA-EXPRESSION
                  GET-SETF-EXPANSION HASH-TABLE-REHASH-SIZE
                  HASH-TABLE-REHASH-THRESHOLD INTERACTIVE-STREAM-P
                  LOAD-LOGICAL-PATHNAME-TRANSLATIONS LOGICAL-PATHNAME
                  MAKE-LOAD-FORM-SAVING-SLOTS OPEN-STREAM-P
                  PATHNAME-MATCH-P PPRINT-DISPATCH PPRINT-FILL
                  PPRINT-INDENT PPRINT-LINEAR PPRINT-NEWLINE PPRINT-TAB
                  PPRINT-TABULAR PRINT-NOT-READABLE-OBJECT
                  READ-SEQUENCE SET-PPRINT-DISPATCH
                  SIMPLE-CONDITION-FORMAT-CONTROL
                  STREAM-EXTERNAL-FORMAT SYNONYM-STREAM-SYMBOL
                  TRANSLATE-LOGICAL-PATHNAME TRANSLATE-PATHNAME
                  TWO-WAY-STREAM-INPUT-STREAM
                  TWO-WAY-STREAM-OUTPUT-STREAM UNBOUND-SLOT-INSTANCE
                  UPGRADED-COMPLEX-PART-TYPE WILD-PATHNAME-P
                  WRITE-SEQUENCE COMPILER-MACRO-FUNCTION
                  LOGICAL-PATHNAME-TRANSLATIONS READTABLE-CASE).
Test CL-MACRO-SYMBOLS.1 failed
Form: (LOOP
        FOR
        S
        IN
        *CL-MACRO-SYMBOLS*
        WHEN
        (OR (NOT (FBOUNDP S)) (NOT (MACRO-FUNCTION S)))
        COLLECT
        S)
Expected value: NIL
Actual value: (DEFINE-COMPILER-MACRO DEFINE-SETF-EXPANDER
                  DEFINE-SYMBOL-MACRO FORMATTER IN-PACKAGE
                  PPRINT-LOGICAL-BLOCK PRINT-UNREADABLE-OBJECT
                  WITH-COMPILATION-UNIT WITH-STANDARD-IO-SYNTAX).
 CL-CONSTANT-SYMBOLS.1
Test CL-VARIABLE-SYMBOLS.1 failed
Form: (LOOP
        FOR
        S
        IN
        *CL-VARIABLE-SYMBOLS*
        WHEN
        (NOT (BOUNDP S))
        COLLECT
        S)
Expected value: NIL
Actual value: (*COMPILE-FILE-PATHNAME* *COMPILE-FILE-TRUENAME*
                  *LOAD-PATHNAME* *LOAD-PRINT* *LOAD-TRUENAME*
                  *PRINT-LINES* *PRINT-MISER-WIDTH*
                  *PRINT-PPRINT-DISPATCH* *PRINT-RIGHT-MARGIN*
                  *READ-EVAL*).
 CL-TYPES-THAT-ARE-CLASSES.1 CL-TYPES-THAT-ARE-CLASSES.20x0041f217 in eval
(form
=0x1060fe1c) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb)
Run till exit from #0  0x0041f217 in eval (form=0x1060fe1c) at eval.c:1037
0x0041f40a in eval (form=0x1060fe10) at eval.c:1077
1077                    eval(MMcar(form));
(gdb)
Run till exit from #0  0x0041f40a in eval (form=0x1060fe10) at eval.c:1077
0x0041f40a in eval (form=0x1060fdf8) at eval.c:1077
1077                    eval(MMcar(form));
(gdb)
Run till exit from #0  0x0041f40a in eval (form=0x1060fdf8) at eval.c:1077
0x0041ed84 in Ieval (form=0x106100fc) at eval.c:928
928     { eval(form);
(gdb) finish
Run till exit from #0  0x0041ed84 in Ieval (form=0x106100fc) at eval.c:928
0x0040d506 in Fsetq (form=0x113790b4) at assignment.c:100
100                             setq(MMcar(form),ans=Ieval(MMcadr(form)));
Value returned is $22 = 0x103e6d20
(gdb) finish
Run till exit from #0  0x0040d506 in Fsetq (form=0x113790b4)
    at assignment.c:100
0x0041f217 in eval (form=0x113790c0) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x113790c0) at eval.c:1037
0x00460b4f in Ftagbody (body=0x11379504) at prog.c:95
95                              eval(MMcar(body));
(gdb) finish
Run till exit from #0  0x00460b4f in Ftagbody (body=0x11379504) at prog.c:95

 CL-TYPES-THAT-ARE-CLASSES.30x0041f217 in eval (form=0x102d7510) at
eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x102d7510) at eval.c:1037
0x0041f40a in eval (form=0x102d74a4) at eval.c:1077
1077                    eval(MMcar(form));
(gdb) finish
Run till exit from #0  0x0041f40a in eval (form=0x102d74a4) at eval.c:1077
0x0046175a in Fprogn (body=0x1135c348) at prog.c:248
248                             eval(MMcar(body));
(gdb) finish
Run till exit from #0  0x0046175a in Fprogn (body=0x1135c348) at prog.c:248
0x0041f217 in eval (form=0x1135c318) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x1135c318) at eval.c:1037
0x00419928 in Fif (form=0x1135be7c) at conditional.c:54
54                      eval(MMcadr(form));
(gdb) finish
Run till exit from #0  0x00419928 in Fif (form=0x1135be7c) at
conditional.c:54
0x0041f217 in eval (form=0x1135be70) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x1135be70) at eval.c:1037
0x0046175a in Fprogn (body=0x1135be64) at prog.c:248
248                             eval(MMcar(body));
(gdb) finish
Run till exit from #0  0x0046175a in Fprogn (body=0x1135be64) at prog.c:248
0x0043e50b in Flet (form=0x1135beb8) at let.c:82
82              Fprogn(body);
(gdb) finish
Run till exit from #0  0x0043e50b in Flet (form=0x1135beb8) at let.c:82
0x0041f217 in eval (form=0x1135bec4) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x1135bec4) at eval.c:1037
0x0046175a in Fprogn (body=0x1135beac) at prog.c:248
248                             eval(MMcar(body));
(gdb) finish
Run till exit from #0  0x0046175a in Fprogn (body=0x1135beac) at prog.c:248
0x0043e50b in Flet (form=0x1135c1bc) at let.c:82
82              Fprogn(body);
(gdb) finish
Run till exit from #0  0x0043e50b in Flet (form=0x1135c1bc) at let.c:82
0x0041f217 in eval (form=0x1135c1b0) at eval.c:1037
1037                    (*fun->s.s_sfdef)(MMcdr(form));
(gdb) finish
Run till exit from #0  0x0041f217 in eval (form=0x1135c1b0) at eval.c:1037
0x0041f981 in fLeval (x0=0x1060fba0) at eval.c:1178
1178            eval(x0);
(gdb) finish
Run till exit from #0  0x0041f981 in fLeval (x0=0x1060fba0) at eval.c:1178
0x00431dc6 in c_apply_n (fn=0x41f925 <fLeval>, n=1, x=0x22e730)
    at funlink.c:363
363         case 1:  res=LCAST(fn)(x[0]);break;
Value returned is $23 = 0x6b83f0
(gdb) finish
Run till exit from #0  0x00431dc6 in c_apply_n (fn=0x41f925 <fLeval>, n=1,
    x=0x22e730) at funlink.c:363
0x0044ae21 in Iinvoke_c_function_from_value_stack (f=0x41f925 <fLeval>,
    fargd=513) at nfunlink.c:293
293       res = c_apply_n(f,nargs,x);
Value returned is $24 = 0x6b83f0
(gdb) finish
Run till exit from #0  0x0044ae21 in Iinvoke_c_function_from_value_stack (
    f=0x41f925 <fLeval>, fargd=513) at nfunlink.c:293
0x0041f920 in Leval () at eval.c:1171
1171           ,1,1,NONE,OO,OO,OO,OO,void,Leval,(object x0),"")
(gdb) finish
Run till exit from #0  0x0041f920 in Leval () at eval.c:1171
Warning:
Cannot insert breakpoint 0.
Error accessing memory address 0x104eb092: Input/output error.

(gdb) p cs_org
$25 = (int *) 0x22ff88
(gdb) p cs_limit
$26 = (int *) 0x21c708
(gdb) p *cs_org
$27 = 1
(gdb) p *cs_limit
$28 = 269647600
(gdb) info registers
eax            0x6c1560 7083360
ecx            0x77c37856       2009299030
edx            0x6c1560 7083360
ebx            0x6c1560 7083360
esp            0x22e850 0x22e850
ebp            0x22e868 0x22e868
esi            0x6c1530 7083312
edi            0x6c156c 7083372
eip            0x41f920 0x41f920
eflags         0x246    582
cs             0x1b     27
ss             0x23     35
ds             0x23     35
es             0x23     35
fs             0x38     56
gs             0x0      0
(gdb)
(gdb) bt
#0  0x0041f920 in Leval () at eval.c:1171
#1  0x104eb092 in ?? ()
#2  0x00000001 in ?? ()
#3  0x1135c57c in ?? ()


Cheers

Mike Thomas.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]