[Ecls-list] CLX and ECL exposure problem

David_Creelman at pa.com.au David_Creelman at pa.com.au
Thu Jan 24 23:01:43 UTC 2008


Hi Juanjo, Christophe,
(Christophe, I've bcced you in case you don't want this email address
being harvested for SPAM).

I've been looking into an exposure error I get when running CLX under ECL.

It can occur immediately after startup or can happen minutes into use.
It seems to only happens on exposure events.

I've run the module clx/demo/hello.lisp (with one extra text draw) under
SBCL
and I am unable to reproduce the error. With ECL I can get the error
reliably,
though it can sometimes take a fair bit of waiting for the event to occur,
moving
an xterm window over the CLX generated window for the error to happen.

The error I get is

> (xlib::hello-world "unix")
#...... after doing this, enlarge the hello world window and move another
window
#over this window......

Read or write operation to stream #<io stream "/tmp/.X11-unix/X0"> signaled
an error.
Explanation: Illegal seek.
Broken at EVAL.No restarts available.
Broken at XLIB:DRAWABLE-WIDTH.
>>

doing : grep -ir "write operation to" * (in ECL src dir)
gives me c/file.d which has :-

static void
io_error(cl_object strm)
{
        FElibc_error("Read or write operation to stream ~S signaled an
error.",
                     1, strm);
}


Juan,
Is it possible in ECL to generate something like a stack trace when an
error
occurs ? I can see that DRAWABLE-WIDTH has failed, but it would be nice to
see
the calls in between.

Christophe,
Is there some special way that SBCL talks to X ?

I think ECL opens the /tmp/.X11-unix/X* stream for io and then just reads
and writes from it.
>From first impressions this looks like a problem where the refresh read
overwrites the update from a previous exposure (or perhaps vice versa).

Does SBCL do some kind of locking or buffering that ECL is missing out on?

The only difference to the hello.lisp I use to reproduce the problem here
is
an extra text draw below the hello world as below
             (draw-glyphs window gcontext (+ x 10) (+ y 10) "other text")))
I did this to increase the amount of work the exposure handler needs
to do. This (seems to) make the error show up more easily.

I am using ECL 0.9j (CVS 2008-01-14 22:35)

The CLX is the latest version retrieved using darcs.
Error also occurs on ECL's packaged version of CLX.

Any ideas or help greatly appreciated.

Thanks and Regards
David





More information about the ecl-devel mailing list