threads + gds + with-input-from-string == fail

2008-02-21 Thread Andy Wingo
Hello,

It took me a while to isolate, but GDS has a problem when evaluating
code that changes the current input port. For example, evaluate the
following:

  (with-input-from-string (+ 2 3) read)

If you are running with a utility guile, this should work. However, if
you start up another guile running GDS in a thread:

$ guile
guile (use-modules (ice-9 threads) (ice-9 gds-client))
guile (make-thread run-utility)

Then reassociate that buffer with the new process, and try evaluating
the above form. For me, GDS goes into the running state and never
comes back. To fix you have to kill the guile, kill the debug server,
and disassociate buffers.

Any idea why this is the case? It would be great to fix it.

Andy
-- 
http://wingolog.org/




Re: threads + gds + with-input-from-string == fail

2008-02-21 Thread Neil Jerram
Andy Wingo [EMAIL PROTECTED] writes:

 Hello,

Hi Andy,

 It took me a while to isolate, but GDS has a problem when evaluating
 code that changes the current input port. For example, evaluate the
 following:

   (with-input-from-string (+ 2 3) read)

 If you are running with a utility guile, this should work. However, if
 you start up another guile running GDS in a thread:

 $ guile
 guile (use-modules (ice-9 threads) (ice-9 gds-client))
 guile (make-thread run-utility)

 Then reassociate that buffer with the new process, and try evaluating
 the above form. For me, GDS goes into the running state and never
 comes back. To fix you have to kill the guile, kill the debug server,
 and disassociate buffers.

 Any idea why this is the case? It would be great to fix it.

I'm trying to set up to reproduce this myself; but meanwhile, there
might be some clues at the end of the gds-debug buffer.  Could you
repro, then cut and paste the last 30 lines (say) of that buffer?

Thanks,
Neil





Re: threads + gds + with-input-from-string == fail

2008-02-21 Thread Neil Jerram
Neil Jerram [EMAIL PROTECTED] writes:

 Andy Wingo [EMAIL PROTECTED] writes:

 Then reassociate that buffer with the new process, and try evaluating
 the above form. For me, GDS goes into the running state and never
 comes back. To fix you have to kill the guile, kill the debug server,
 and disassociate buffers.

 Any idea why this is the case? It would be great to fix it.

 I'm trying to set up to reproduce this myself; but meanwhile, there
 might be some clues at the end of the gds-debug buffer.  Could you
 repro, then cut and paste the last 30 lines (say) of that buffer?

I can't reproduce this problem with current Guile CVS, and we have
fixed a couple of thready things recently, so you never know...  What
version of Guile are you using?

Regards,
  Neil