Hi Gast?n, Yes you are right, and you have found a way to correct the problem. When you do OSProcessAccessor initialize, a new child watcher process will be started, and this will correct any problem in the old one. I am still curious to discover the cause of the original failure. I suspect that it is something that can be corrected with a change to the child watcher process. I'm sorry if I missed your earlier message, I was having trouble with my email last week and I missed some discussions on the list. Dave On Wed, May 02, 2012 at 10:24:43PM -0300, Gast?n Dall' Oglio wrote:
Hi David.
I send some days ago a mail reporting "process never is completed" in Windows, and I propose similar steps to reproduce, see: http://forum.world.st/OSProcess-is-process-done-tp4569088p4570740.html
Two notes about this previous mail: Two notes about this previous mail: I say "the image hang", but this was when I evaluate #waitForCommand: and obviously is related to that the external process is always marked as running, not just "when I open the image with OSProcess already loaded" how I says. Another, I do OSProcess command: 'cmd.exe /c dir' en windows 7, OSProcess command: 'dir' only work in windows xp.
Well, I run this and both result in a always running process and thread:
1) OSProcess command: 'cmd.exe /c dir'. => always running process (although the associated underlying process is complete)
2) OSProcess thisOSProcess restartChildWatcherThread => always running thread.
As I says in previous mail, if I unload and load OSProcess package then all begin to work fine. Then, I suspected that was needed rerun some class side initialize code to solve the problem. And yes!!! That is OSProcessAccessor initialize. I added that to
ThisOSProcess>>startUp: resuming | aio | (aio := Smalltalk at: #AioEventHandler) ifNotNil: [ aio startUp: resuming ]. *OSProcessAccessor initialize.* self initializeThisOSProcess
Regards.
2012/5/2 David T. Lewis <lewis@mail.msen.com>
Sean,
Can you please try two things, in this order, and let me know which one causes the problem to go away?
1) Save your image, exit, and restart. Then try
(OSProcess command: 'ls') inspect
and see if it results in a process proxy with run state "complete".
2) Restart the child watcher
OSProcess accessor restartChildWatcherProcess. (OSProcess command: 'ls') inspect
and see if it results in a process proxy with run state "complete".
Thanks, Dave
With the latest OSProcess package from SqS, when I save the image, I get:
2 May 2012 1:20:30 am
VM: Mac OS - intel - 1073 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog-EstebanLorenzano.155] 21.0 Image: Pharo1.3 [Latest update: #13320]
UndefinedObject(Object)>>doesNotUnderstand: #wait Receiver: nil Arguments and temporary variables: aMessage: wait exception: MessageNotUnderstood: receiver of "wait" is nil resumeValue: nil Receiver's instance variables: nil
[[event wait. processSynchronizationDelay wait. self changed: #childProcessStatus] repeat. nil] in UnixOSProcessAccessor>>grimReaperProcess Receiver: a UnixOSProcessAccessor on pid 22740 Arguments and temporary variables: event: nil processSynchronizationDelay: a Delay(20 msecs) Receiver's instance variables: dependents: a DependentsArray(a UnixProcess with pid
On Tue, May 01, 2012 at 10:22:44PM -0700, Sean P. DeNigris wrote: 22740)
sessionIdentifier: #[104 195 160 79] canObtainSessionIdentifierFromPlugin: true hasTestEof: nil grimReaper: a Process in MorphicUIManager>>openDebuggerOn:context:label:content...etc... sigChldSemaphore: nil
Weird...
-- View this message in context:
http://forum.world.st/OSProcess-error-in-1-3-tp4602389.html
Sent from the Pharo Smalltalk mailing list archive at Nabble.com.