[squeak-dev] Re: Unix OSProcess error
Andreas Raab
andreas.raab at gmx.de
Thu Aug 6 21:36:35 UTC 2009
David T. Lewis wrote:
> Probably yes. From memory I think that 'cmd closePipes' will do what you
> need. But I'm sure there are cleaner ways to do this, so I'll give you
> a better answer later on when I get home a few hours from now. I guess
> it's time I started carrying one of Bert's Squeak-on-a-stick solutions
> on my keychain ;)
A quick test seems to indicate that no specific cleanup is required
after the command - I didn't see any extra open handles after running it
several times. However, there was an odd error earlier on the server in
question which I had ignored but might turn out related. The error was
"unsupported primitive, plugin may be out of date" (stack trace below)
and I am wondering whether that might have killed the grimReaperProcess
and led to the accumulation of the handles (no clue what might actually
cause that error; the plugin is up-to-date).
In any case, thanks for the /proc/pid/fd pointer - this is actually
extremely useful information that I didn't know existed.
Cheers,
- Andreas
UnixOSProcessAccessor(Object)>>error:
Receiver: a UnixOSProcessAccessor on pid 7280
Arguments and temporary variables:
aString: 'unsupported primitive, plugin may be out of date'
Receiver's instance variables:
dependents: #(a UnixProcess with pid 7280)
sessionIdentifier: a ByteArray(77 228 121 74)
canObtainSessionIdentifierFromPlugin: true
grimReaper: a Process in [] in Semaphore>>critical:
sigChldSemaphore: a Semaphore()
UnixOSProcessAccessor>>isAtEndOfFile:
Receiver: a UnixOSProcessAccessor on pid 7280
Arguments and temporary variables:
anIOHandle: nil
atEof: nil
Receiver's instance variables:
dependents: #(a UnixProcess with pid 7280)
sessionIdentifier: a ByteArray(77 228 121 74)
canObtainSessionIdentifierFromPlugin: true
grimReaper: a Process in [] in Semaphore>>critical:
sigChldSemaphore: a Semaphore()
AttachableFileStream(StandardFileStream)>>atEndOfFile
Receiver: AttachableFileStream: 'pipeReader'
Arguments and temporary variables:
Receiver's instance variables:
AttachableFileStream>>upToEndOfFile
Receiver: AttachableFileStream: 'pipeReader'
Arguments and temporary variables:
newStream: a WriteStream ''
buffer:
'€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€...etc...
Receiver's instance variables:
ExternalPipe>>upToEndOfFile
Receiver: an ExternalPipe
Arguments and temporary variables:
Receiver's instance variables:
writer: AttachableFileStream: 'pipeWriter'
reader: AttachableFileStream: 'pipeReader'
blocking: false
--- The full stack ---
UnixOSProcessAccessor(Object)>>error:
UnixOSProcessAccessor>>isAtEndOfFile:
AttachableFileStream(StandardFileStream)>>atEndOfFile
AttachableFileStream>>upToEndOfFile
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExternalPipe>>upToEndOfFile
[] in PipeableOSProcess>>update:
ExternalPipe(Object)>>ifNotNilDo:
PipeableOSProcess>>update:
[] in ExternalUnixOSProcess(Object)>>changed:
DependentsArray>>do:
ExternalUnixOSProcess(Object)>>changed:
ExternalUnixOSProcess(ExternalOSProcess)>>runState:
ExternalUnixOSProcess(ExternalOSProcess)>>complete
ExternalUnixOSProcess>>update:
[] in UnixProcess(ThisOSProcess)>>updateActiveChildren
[] in Dictionary>>do:
Dictionary(Set)>>do:
Dictionary>>do:
UnixProcess(ThisOSProcess)>>updateActiveChildren
UnixProcess>>update:
[] in UnixOSProcessAccessor(Object)>>changed:
DependentsArray>>do:
UnixOSProcessAccessor(Object)>>changed:
[] in [] in UnixOSProcessAccessor>>grimReaperProcess
BlockClosure>>repeat
[] in UnixOSProcessAccessor>>grimReaperProcess
[] in BlockClosure>>newProcess
More information about the Squeak-dev
mailing list
|