[Openmcl-devel] yielding to a thread in cocoa-application

R. Matthew Emerson rme at clozure.com
Mon Feb 9 18:22:13 PST 2015

> On Feb 5, 2015, at 4:03 PM, Arthur Cater <arthur.cater at ucd.ie> wrote:
> Hi,
> This has bugged me for years.
> When something goes wrong in the gui part of a cocoa application (on Mac),
> the Alt-Console window says things like
> ;;;
> ;;; #<PROCESS G55677(11) [Active] #x30200CC1D6BD> requires access to Shared Terminal Input
> ;;; Type (:y 11) to yield control to this thread.
> ;;;
> Where am I supposed to type (:y 11)?
> It does nothing in the listener and it does nothing in the Alt-Console display.
> Thanks for any help ...

You're supposed to be able to type ":y 11" (with or without the parens) at *terminal-io*, and then the process in question will obtain "ownership" of *terminal-io* and be able to interact with the user.

As an example, from a terminal lisp, evaluate

(process-run-function "argh" #'(lambda () (error "argh")))

You'll be prompted to type "(:y 3)", and then you'll get a break loop for the process in question.

As you note, if you do the same in an IDE listener, it appears that although you get the message in the AltConsole window, this isn't working (and may never have worked) for some reason.  It should work if you use (require 'cocoa-appliction) and leave an actual terminal window attached to the lisp.

I made http://trac.clozure.com/ccl/ticket/1266 for this.

More information about the Openmcl-devel mailing list