[Ecls-list] bind stack overflow

Julian St. der_julian at web.de
Tue Jun 10 17:49:01 UTC 2003


Hello again,

I have some trouble with my X-Chat plugin. I use it to filter certain messages from IRC, so a lisp callback gets called quite often. But when I leave X-chat over night and then issue a /lisp command (which invokes a lisp callback) I get a core dump.

There is X-Chat calling the C part of the callback which in turn tries to invoke the lisp function. But it raises an INVALID-FUNCTION error. The strange thing is, that nothing ought to change the cons where I store the lisp function object and the associated data to pass to the function.

As I pass this cons of lisp function and lisp data over to X-Chat which in turn stores it, could it be that this cons (and its contents?) gets garbage collected and my code is trying to access "empty" memory? If this is true, how can I avoid this?

I got this with ECL 0.9.

[Messages from X-Chat]
...
0 is an illegal frs index.
0 is an illegal frs index.
0 is an illegal frs index.
0 is an illegal frs index.
0 is an illegal frs index.
Bind stack overflow.
0 is an illegal frs index.
Bind stack overflow.
Bind stack overflow.
0 is an illegal frs index.

Unrecoverable error: bind stack overflow.
Abbruch (core dumped)


[GDB Backtrace]

(gdb) bt full
#0  0x288e4393 in kill () from /usr/lib/libc.so.5
No symbol table info available.
#1  0x2894f17c in abort () from /usr/lib/libc.so.5
No symbol table info available.
#2  0x28b6b829 in error () at error.d:43
No locals.
#3  0x28b78c3f in bds_overflow () at stacks.d:53
No locals.
#4  0x28bddb5b in L6 (narg=0) at /usr/home/blitz/src/ecls/build/lsp/top.c:334
        T0 = (union lispunion *) 0x0
        value0 = (union lispunion *) 0x1
#5  0x28be0863 in L47 (narg=1, V1=0x8515a98)
    at /usr/home/blitz/src/ecls/build/lsp/top.c:1815
        T0 = (union lispunion *) 0x0
        value0 = (union lispunion *) 0x0
#6  0x28be092f in L48 (narg=1, V1=0x8515a98)
    at /usr/home/blitz/src/ecls/build/lsp/top.c:1840
        V2 = (union lispunion *) 0x5
        value0 = (union lispunion *) 0x8515a98
#7  0x28b84089 in APPLY (n=93742, fn=0x5, x=0x0) at apply.d:23
No locals.
#8  0x28ba7732 in L1 (narg=3, V1=0x28c1b6e0, V2=0x84ecfd8, V3=0x84a1400)
    at /usr/home/blitz/src/ecls/build/clos/conditions.c:60
        V4 = (union lispunion * volatile) 0x8515a98
        T0 = (union lispunion *) 0x83b74f8
        T1 = (union lispunion *) 0x0
        T2 = (union lispunion *) 0x83b74f8
        env0 = (union lispunion * volatile) 0x84a13e0
        CLV0 = (union lispunion **) 0x83b74f8
        value0 = (union lispunion *) 0x0
----------------
This repeats for quite a lot stack frames ... and there comes the interesting part:
----------------
#1588 0x28be092f in L48 (narg=1, V1=0x8411198)
    at /usr/home/blitz/src/ecls/build/lsp/top.c:1840
        V2 = (union lispunion *) 0x5
        value0 = (union lispunion *) 0x8411198
#1589 0x28b84089 in APPLY (n=93742, fn=0x5, x=0x0) at apply.d:23
No locals.
#1590 0x28ba7732 in L1 (narg=3, V1=0x28c1b6e0, V2=0x28c20768, V3=0x853f170)
    at /usr/home/blitz/src/ecls/build/clos/conditions.c:60
        V4 = (union lispunion * volatile) 0x8411198
        T0 = (union lispunion *) 0x83b74f8
        T1 = (union lispunion *) 0x0
        T2 = (union lispunion *) 0x83b74f8
        env0 = (union lispunion * volatile) 0x853f120
        CLV0 = (union lispunion **) 0x83b74f8
        value0 = (union lispunion *) 0x0
#1591 0x28b84089 in APPLY (n=93742, fn=0x5, x=0x0) at apply.d:23
No locals.
#1592 0x28b6bcaa in cl_error (narg=138844080, eformat=0x28c20768)
    at error.d:266
        args = {{args = 0xbfbfd158 "", sp = 0, narg = 0}}
#1593 0x28b6baca in FEwrong_type_argument () at error.d:154
No locals.
#1594 0x28b6bb6e in FEinvalid_function () at error.d:207
No locals.
#1595 0x28b59fcb in cl_funcall () at eval.d:219
        sp = 0
        fun = (union lispunion *) 0x84941f8
        out = (union lispunion *) 0x84941f8
        funargs = {{args = 0xbfbfd1d4 "øAI\bðÒ¿¿`Ë*\bhâ\037\b", sp = 0, 
    narg = 0}}
#1596 0x28b52f1d in cbGenericCommand (word=0xbfbfd2f0, word_eol=0x28c1db70, 
    userdata=0x28c1db70) at plugin.c:236
        result = (union lispunion *) 0x28c1db70
        lisp_callback = (union lispunion *) 0x84941f8
        lisp_userdata = (union lispunion *) 0x8459ab0
#1597 0x080851e7 in gtk_widget_grab_focus ()
...
--------------------------


Regards,
Julian
-- 
                           Reboot America.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20030610/9d891fac/attachment.sig>


More information about the ecl-devel mailing list