[ltk-user] Mysterious breakage
Theam Yong Chew
senatorzergling at gmail.com
Mon Oct 4 10:24:01 UTC 2010
Hi list,
I recently made the eerie discovery that all my programs that use Ltk
have suddenly stopped working under Windows. I've been a happy user of
Ltk for many years. It has always worked flawlessly on all platforms
for me, and indeed, on my Linux box, it has continued to work very
well.
There has been no changes in my program, wish.exe or in my computer
(except for maybe auto-updates?). The recent problems vary slightly in
their symptoms, so here's a try at accurately describing some
scenarios:
On first trying to show a window by, eg (with-ltk () (show-main)) or
(ltk-eyes), my Lisp (clisp-2.48, which is single threaded) blocks as
it should, and
1. on one windows XP SP3 box, a window appears normally. However,
mousing over the window causes the mouse cursor to turn into the
hour-glass symbol, and the window becomes unresponsive (though I
can minimize/restore it, it does not "redisplay").
2. on another windows XP SP3 box, no window appears.
In both cases, breaking on the clisp REPL (C-c) causes an Error dialog
box to pop up:
"Win32 error 0 (ERROR_SUCCERSS): The operation completed successfully.
Do you wish to invoke the debugger?"
Upon invoking the debugger, everything seems normal to me, since we are
supposed to be blocking on read-preserving-whitespace:
<1/255> #<SYSTEM-FUNCTION SHOW-STACK> 3
<2/248> #<COMPILED-FUNCTION SYSTEM::PRINT-BACKTRACE>
<3/242> #<COMPILED-FUNCTION SYSTEM::DEBUG-BACKTRACE>
<4/233> #<SYSTEM-FUNCTION SYSTEM::READ-EVAL-PRINT> 2
<5/230> #<COMPILED-FUNCTION SYSTEM::BREAK-LOOP-2-3>
<6/226> #<SYSTEM-FUNCTION SYSTEM::SAME-ENV-AS> 2
<7/212> #<COMPILED-FUNCTION SYSTEM::BREAK-LOOP-2>
<8/210> #<SYSTEM-FUNCTION SYSTEM::DRIVER>
<9/170> #<COMPILED-FUNCTION SYSTEM::BREAK-LOOP>
<10/167> #<SYSTEM-FUNCTION INVOKE-DEBUGGER>
<11/164> #<COMPILED-FUNCTION LTK::DEBUG-POPUP>
<12/161> #<COMPILED-FUNCTION LTK::DEBUG-ERROR>
<13/157> #<COMPILED-FUNCTION LTK::MAKE-CONDITION-HANDLER-FUNCTION-1-1>
<14/152> #<SYSTEM-FUNCTION SIGNAL> 1
<15/124> #<SYSTEM-FUNCTION READ-PRESERVING-WHITESPACE>
<16/119> #<COMPILED-FUNCTION LTK:READ-EVENT>
<17/116> #<COMPILED-FUNCTION LTK::MAIN-ITERATION-PROC-EVENT>
<18/103> #<COMPILED-FUNCTION LTK::MAIN-ITERATION>
<19/101> #<COMPILED-FUNCTION LTK::MAINLOOP-1>
<20/99> #<COMPILED-FUNCTION LTK::MAKE-CONDITION-HANDLER-FUNCTION-1-1-5>
<21/88> #<COMPILED-FUNCTION LTK::MAKE-CONDITION-HANDLER-FUNCTION-1-1>
<22/85> #<COMPILED-FUNCTION
LTK::COMPUTE-CALL-WITH-DEBUGGER-HOOK-USE-DEFAULT-DEBUGGER>
...etc
Alternatively, clicking "No" (don't invoke debugger) returns me to the
first screen and everything works normally again (so break & continue
is a kludgy way to get this working, at least on the computers I've
seen).
Another alternative (for windows box 1 above) is to not BREAK in
clisp, but to close it forcibly, whereupon the Tk window stops
hanging/freezing. Of course, any attempt to use it (button clicks)
result in this error dialog box (cannot communicate to non-existent
Lisp):
Application Error: "Error: error writing "stdout": broken pipe"
Clicking to show more details gives:
error writing "stdout": broken pipe
error writing "stdout": broken pipe
while executing
"puts "(:callback \"$s\")""
(procedure "callback" line 1)
invoked from within
"callback w6"
invoked from within
".w2.w3.w5.w6 invoke"
("uplevel" body line 1)
invoked from within
"uplevel #0 [list $w invoke]"
(procedure "tk::ButtonUp" line 24)
invoked from within
"tk::ButtonUp .w2.w3.w5.w6"
(command bound to event)
Though pointless, it does what I expected, so I'm just providing the
above for reference.
I've also tried out the repl branch here:
http://ltk.rplay.net/svn/branches/ltk/repl/ltk.lisp
[Sidenote: I pushed :tk84 onto *features*, and consequently had to
make some patches (treeview not defined under #+tk84). Do you think
the patch shows the right way to go about this? I also noticed that
the newer Ttk buttons take vastly different (DEFARGS type)
arguments. Of interest to me specifically, :is font no longer
supported under the Ttk "branch"?]
The patched repl branch works on windows box 2, but showed no
improvement (same behaviour) on windows box 1.
It has been very confusing having the carpet yanked out from under me
after using Ltk (albeit casually, on and off) for so many years. My
best guess at the moment is that it is something in the latest Windows
upgrade has broken the pipe between Lisp and wish. I intend to
investigate piping functionality some more later. I will also need to
debug this on another computer later, so who knows what other
behaviour I'll see.
Has anyone else experienced any trouble similar to this? I'll probably
also be trying out this suggestion (I don't understand what it does)
for windows box 1.
http://common-lisp.net/pipermail/ltk-user/2010-February/000712.html
Daniel mentioned earlier in that thread that there have been lots of
issues reported on XP, but I've always been under the impression that
Ltk is solid for Windows. Have I been mistaken? Any other suggestions
(both quick hacks and permanent fixes) for how to go about this?
Yong.
More information about the ltk-user
mailing list