On 10/4/2010 9:27 PM, Daniel Herring wrote:
On Tue, 5 Oct 2010, Jonathan Johansen wrote:
I tried using Ltk a while back (running Phil's Able editor), and immediately ran into the kind of problem you report. I found that bringing up a msgbox as the first thing to do, and dismissing it by pressing Enter (not by clicking) was one way to avoid the hang. Unfortunately that's all I can add. I'm pretty sure there are a few more people that would be very happy to see this bug get fixed. I hit it and just stopped trying to do GUI programming, so if it get's fixed, I'll be very happy, and willing to test things on my 'eerie' computer.
So the patches I sent several months ago make things work 100% on my xp box. It is my belief that the problem is some oddity of how ms-broken-windows handles process creation and/or stream i/o.
What I saw (e.g. the ABLE window not appearing until after I terminated clisp) lead me to believe that ltk was writing everything to the wish shell before it entered the Tk event loop; thus Tk never received notification of pending data until the stream was closed. Strategic placement of a (sleep 1) solved my problem and reinforced my belief.
That said, I did a bunch of tinkering, never breaking out proper debug tools. Its possible I just moved a race condition away from my computer and towards others. To diagnose this properly, someone needs to break out the debuggers and attach to both lisp and wish after the startup hang. Backtraces should show what each is doing, hopefully pointing out where the deadlock occurs.
These links may help. http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx http://www.microsoft.com/whdc/devtools/debugging/default.mspx
This link might help: http://common-lisp.net/project/cffi/
It's time for LTk to lose the stream crutch. FFI isn't /that/ hard, and it only needs to be done by the LTk maintainers.
kt