<div dir="ltr">HI Andrei,<div><br></div><div>Yep, this is the same issue.   Glad to hear that someone else has seen it.  </div><div><br></div><div>Thanks!</div><div>-- Bob</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 20, 2021 at 1:53 AM Andrei Chis <<a href="mailto:chisvasileandrei@gmail.com">chisvasileandrei@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br>
Maybe not related at all, but in a different context we were getting<br>
random failures when redirecting output from os commands to the stdio<br>
depending on the value of #ioMSecs caused by an inconsistency in how<br>
globalSessionID was computed<br>
(<a href="https://github.com/pharo-project/opensmalltalk-vm/issues/233" rel="noreferrer" target="_blank">https://github.com/pharo-project/opensmalltalk-vm/issues/233</a>)<br>
<br>
On Wed, May 19, 2021 at 11:28 PM Bob Westergaard <<a href="mailto:bwestergaard@gmail.com" target="_blank">bwestergaard@gmail.com</a>> wrote:<br>
><br>
><br>
> I'm pretty sure that is it.  I added some logging code to primitiveTestEndOfFileFlag() and the session ids do not compare.  I see (in a not very recent) VMMaker image that #ioMSecs is used to create the global session id.  Maybe there is some overflow/underflow with the primitive type used for this field?<br>
><br>
> -- Bob<br>
><br>
> On Wed, May 19, 2021 at 2:17 PM Bob Westergaard <<a href="mailto:bwestergaard@gmail.com" target="_blank">bwestergaard@gmail.com</a>> wrote:<br>
>><br>
>> I wonder if the file/pipe sessionID comparison with the getThisSessionID() that is failing in a primitive somewhere.    I guess I'll look at how that is created.<br>
>><br>
>> -- Bob<br>
>><br>
>> On Wed, May 19, 2021 at 2:06 PM Bob Westergaard <<a href="mailto:bwestergaard@gmail.com" target="_blank">bwestergaard@gmail.com</a>> wrote:<br>
>>><br>
>>><br>
>>> Hi Dave,<br>
>>><br>
>>> I'm changing the system time before starting the image.<br>
>>><br>
>>> -- Bob<br>
>>><br>
>>> On Wed, May 19, 2021 at 2:02 PM David T. Lewis <<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>> wrote:<br>
>>>><br>
>>>><br>
>>>> Wos, that's a new one on me. What exactly are you changing on your<br>
>>>> computer, are you changing the system time, or changing time zone?<br>
>>>><br>
>>>> Dave<br>
>>>><br>
>>>> On Wed, May 19, 2021 at 12:17:58PM -0700, Bob Westergaard wrote:<br>
>>>> ><br>
>>>> > Hi,<br>
>>>> ><br>
>>>> > I have a rather bizarre intermittent failure that I'd see if anyone else<br>
>>>> > can reproduce.<br>
>>>> ><br>
>>>> > I've taken the following:<br>
>>>> ><br>
>>>> > <a href="http://files.squeak.org/5.3/Squeak5.3-19435-64bit/Squeak5.3-19435-64bit-202003021730-Linux.zip" rel="noreferrer" target="_blank">http://files.squeak.org/5.3/Squeak5.3-19435-64bit/Squeak5.3-19435-64bit-202003021730-Linux.zip</a><br>
>>>> ><br>
>>>> > Started it up and loaded the latest system updates and the OSProcess<br>
>>>> > package (access OS functions).<br>
>>>> ><br>
>>>> > I then did:<br>
>>>> ><br>
>>>> >     CommandShell command: 'date'<br>
>>>> ><br>
>>>> > This works as I'd expect it too.<br>
>>>> ><br>
>>>> > However, what is interesting is that if I change the time on the machine to<br>
>>>> > any time between 7:36AM and 10:36AM (PDT, I'm in San Jose, CA) for today<br>
>>>> > (May 19th) this call fails with the stack below.  I'm quitting the image<br>
>>>> > between time changes.<br>
>>>> ><br>
>>>> > There was no failure for the same time period yesterday.  Nor does it<br>
>>>> > appear to fail for any other time period today.<br>
>>>> ><br>
>>>> > -- Bob<br>
>>>> ><br>
>>>> > Stack follows:<br>
>>>> ><br>
>>>> > 19 May 2021 10:30:20.503624 am<br>
>>>> ><br>
>>>> > VM: unix - Smalltalk<br>
>>>> > Image: Squeak5.3 [latest update: #19458]<br>
>>>> ><br>
>>>> > SecurityManager state:<br>
>>>> > Restricted: false<br>
>>>> > FileAccess: true<br>
>>>> > SocketAccess: true<br>
>>>> > Working Dir<br>
>>>> > /scratch/bwesterg/squeak/Squeak5.3-19435-64bit-202003021730-Linux/shared<br>
>>>> > Trusted Dir<br>
>>>> > /scratch/bwesterg/squeak/Squeak5.3-19435-64bit-202003021730-Linux/shared/secure<br>
>>>> > Untrusted Dir<br>
>>>> > /scratch/bwesterg/squeak/Squeak5.3-19435-64bit-202003021730-Linux/shared/My<br>
>>>> > Squeak<br>
>>>> ><br>
>>>> > AioEventHandler(Object)>>notify:<br>
>>>> > Receiver: an AioEventHandler<br>
>>>> > Arguments and temporary variables:<br>
>>>> > aString: 'aio event forwarding not supported'<br>
>>>> > Receiver's instance variables:<br>
>>>> > dependents: nil<br>
>>>> > semaphore: nil<br>
>>>> > semaIndex: nil<br>
>>>> > handlerProc: nil<br>
>>>> > descriptor: nil<br>
>>>> ><br>
>>>> > [] in AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > Receiver: an AioEventHandler<br>
>>>> > Arguments and temporary variables:<br>
>>>> > <<error during printing><br>
>>>> > Receiver's instance variables:<br>
>>>> > dependents: nil<br>
>>>> > semaphore: nil<br>
>>>> > semaIndex: nil<br>
>>>> > handlerProc: nil<br>
>>>> > descriptor: nil<br>
>>>> ><br>
>>>> > BlockClosure>>cull:<br>
>>>> > Receiver: [closure] in<br>
>>>> > AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > Arguments and temporary variables:<br>
>>>> > firstArg: Warning: aio event forwarding not supported<br>
>>>> > Receiver's instance variables:<br>
>>>> > outerContext:<br>
>>>> > AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > startpc: 154<br>
>>>> > numArgs: 1<br>
>>>> ><br>
>>>> > [] in Context>>handleSignal:<br>
>>>> > Receiver: BlockClosure>>on:do:<br>
>>>> > Arguments and temporary variables:<br>
>>>> > <<error during printing><br>
>>>> > Receiver's instance variables:<br>
>>>> > sender: AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > pc: 32<br>
>>>> > stackp: 3<br>
>>>> > method: (BlockClosure>>#on:do: "a CompiledMethod(1660548)")<br>
>>>> > closureOrNil: nil<br>
>>>> > receiver: [closure] in<br>
>>>> > AioEventHandler>>initializeForExceptions:readEvents:writeEvents:...etc...<br>
>>>> ><br>
>>>> > BlockClosure>>ensure:<br>
>>>> > Receiver: [closure] in Context>>handleSignal:<br>
>>>> > Arguments and temporary variables:<br>
>>>> > aBlock: [closure] in Context>>handleSignal:<br>
>>>> > complete: nil<br>
>>>> > returnValue: nil<br>
>>>> > Receiver's instance variables:<br>
>>>> > outerContext: Context>>handleSignal:<br>
>>>> > startpc: 174<br>
>>>> > numArgs: 0<br>
>>>> ><br>
>>>> > Context>>handleSignal:<br>
>>>> > Receiver: BlockClosure>>on:do:<br>
>>>> > Arguments and temporary variables:<br>
>>>> > exception: Warning: aio event forwarding not supported<br>
>>>> > handlerActive: true<br>
>>>> > val: nil<br>
>>>> > Receiver's instance variables:<br>
>>>> > sender: AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > pc: 32<br>
>>>> > stackp: 3<br>
>>>> > method: (BlockClosure>>#on:do: "a CompiledMethod(1660548)")<br>
>>>> > closureOrNil: nil<br>
>>>> > receiver: [closure] in<br>
>>>> > AioEventHandler>>initializeForExceptions:readEvents:writeEvents:...etc...<br>
>>>> ><br>
>>>> > Warning(Exception)>>signal<br>
>>>> > Receiver: Warning: aio event forwarding not supported<br>
>>>> > Arguments and temporary variables:<br>
>>>> ><br>
>>>> > Receiver's instance variables:<br>
>>>> > messageText: 'aio event forwarding not supported'<br>
>>>> > tag: nil<br>
>>>> > signalContext: Warning(Exception)>>signal<br>
>>>> > handlerContext: BlockClosure>>on:do:<br>
>>>> > outerContext: nil<br>
>>>> ><br>
>>>> > Warning(Exception)>>signal:<br>
>>>> > Receiver: Warning: aio event forwarding not supported<br>
>>>> > Arguments and temporary variables:<br>
>>>> > signalerText: 'aio event forwarding not supported'<br>
>>>> > Receiver's instance variables:<br>
>>>> > messageText: 'aio event forwarding not supported'<br>
>>>> > tag: nil<br>
>>>> > signalContext: Warning(Exception)>>signal<br>
>>>> > handlerContext: BlockClosure>>on:do:<br>
>>>> > outerContext: nil<br>
>>>> ><br>
>>>> > Warning class>>signal:<br>
>>>> > Receiver: Warning<br>
>>>> > Arguments and temporary variables:<br>
>>>> > signalerText: 'aio event forwarding not supported'<br>
>>>> > Receiver's instance variables:<br>
>>>> > superclass: Notification<br>
>>>> > methodDict: a MethodDictionary(#defaultAction->(Warning>>#defaultAction "a<br>
>>>> > CompiledMethod...etc...<br>
>>>> > format: 65541<br>
>>>> > instanceVariables: nil<br>
>>>> > organization: ('priv handling' defaultAction)<br>
>>>> ><br>
>>>> > subclasses: {Deprecation . ServiceCancelled . SAXWarning .<br>
>>>> > UndeclaredVariableWarning...etc...<br>
>>>> > name: #Warning<br>
>>>> > classPool: nil<br>
>>>> > sharedPools: nil<br>
>>>> > environment: nil<br>
>>>> > category: #'Kernel-Exceptions'<br>
>>>> > suppressed: false<br>
>>>> > resetOnStartUp: false<br>
>>>> ><br>
>>>> > AioEventHandler(Object)>>notify:<br>
>>>> > Receiver: an AioEventHandler<br>
>>>> > Arguments and temporary variables:<br>
>>>> > aString: 'aio event forwarding not supported'<br>
>>>> > Receiver's instance variables:<br>
>>>> > dependents: nil<br>
>>>> > semaphore: nil<br>
>>>> > semaIndex: nil<br>
>>>> > handlerProc: nil<br>
>>>> > descriptor: nil<br>
>>>> ><br>
>>>> > AioEventHandler>>aioEnable:forSemaphore:externalObject:<br>
>>>> > Receiver: an AioEventHandler<br>
>>>> > Arguments and temporary variables:<br>
>>>> > ioDescriptor: nil<br>
>>>> > semaphoreIndex: 17<br>
>>>> > trueOrFalse: true<br>
>>>> > Receiver's instance variables:<br>
>>>> > dependents: nil<br>
>>>> > semaphore: nil<br>
>>>> > semaIndex: nil<br>
>>>> > handlerProc: nil<br>
>>>> > descriptor: nil<br>
>>>> ><br>
>>>> > [] in AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > Receiver: an AioEventHandler<br>
>>>> > Arguments and temporary variables:<br>
>>>> > <<error during printing><br>
>>>> > Receiver's instance variables:<br>
>>>> > dependents: nil<br>
>>>> > semaphore: nil<br>
>>>> > semaIndex: nil<br>
>>>> > handlerProc: nil<br>
>>>> > descriptor: nil<br>
>>>> ><br>
>>>> > BlockClosure>>on:do:<br>
>>>> > Receiver: [closure] in<br>
>>>> > AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > Arguments and temporary variables:<br>
>>>> > exceptionOrExceptionSet: Warning<br>
>>>> > handlerAction: [closure] in<br>
>>>> > AioEventHandler>>initializeForExceptions:readEvents:writeEvents:...etc...<br>
>>>> > handlerActive: false<br>
>>>> > Receiver's instance variables:<br>
>>>> > outerContext:<br>
>>>> > AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > startpc: 140<br>
>>>> > numArgs: 0<br>
>>>> ><br>
>>>> > AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > Receiver: an AioEventHandler<br>
>>>> > Arguments and temporary variables:<br>
>>>> > exceptionEventFlag: true<br>
>>>> > readEventFlag: true<br>
>>>> > writeEventFlag: false<br>
>>>> > Receiver's instance variables:<br>
>>>> > dependents: nil<br>
>>>> > semaphore: nil<br>
>>>> > semaIndex: nil<br>
>>>> > handlerProc: nil<br>
>>>> > descriptor: nil<br>
>>>> ><br>
>>>> > AioEventHandler>>forFileStream:exceptions:readEvents:writeEvents:<br>
>>>> > Receiver: an AioEventHandler<br>
>>>> > Arguments and temporary variables:<br>
>>>> > aFileStream: BufferedAsyncFileReadStream: 'pipeReader'<br>
>>>> > exceptionEventFlag: true<br>
>>>> > readEventFlag: true<br>
>>>> > writeEventFlag: false<br>
>>>> > Receiver's instance variables:<br>
>>>> > dependents: nil<br>
>>>> > semaphore: nil<br>
>>>> > semaIndex: nil<br>
>>>> > handlerProc: nil<br>
>>>> > descriptor: nil<br>
>>>> ><br>
>>>> > AioEventHandler class>>forFileStream:exceptions:readEvents:writeEvents:<br>
>>>> > Receiver: AioEventHandler<br>
>>>> > Arguments and temporary variables:<br>
>>>> > aFileStream: BufferedAsyncFileReadStream: 'pipeReader'<br>
>>>> > exceptionEventFlag: true<br>
>>>> > readEventFlag: true<br>
>>>> > writeEventFlag: false<br>
>>>> > Receiver's instance variables:<br>
>>>> > superclass: Model<br>
>>>> > methodDict: a MethodDictionary(#aioDisable:->(AioEventHandler>>#aioDisable:<br>
>>>> > "a CompiledMethod...etc...<br>
>>>> > format: 65541<br>
>>>> > instanceVariables: #('semaphore' 'semaIndex' 'handlerProc' 'descriptor')<br>
>>>> > organization: ('aio event forwarding' aioDisable:<br>
>>>> > aioEnable:forSemaphore:externalObject:...etc...<br>
>>>> > subclasses: nil<br>
>>>> > name: #AioEventHandler<br>
>>>> > classPool: a Dictionary(#AioPluginPresent->true )<br>
>>>> > sharedPools: nil<br>
>>>> > environment: Smalltalk<br>
>>>> > category: #'OSProcess-AIO'<br>
>>>> ><br>
>>>> > BufferedAsyncFileReadStream(AsyncFileReadStream)>>enableEventHandling<br>
>>>> > Receiver: BufferedAsyncFileReadStream: 'pipeReader'<br>
>>>> > Arguments and temporary variables:<br>
>>>> ><br>
>>>> > Receiver's instance variables:<br>
>>>> ><br>
>>>> ><br>
>>>> > BufferedAsyncFileReadStream(AsyncFileReadStream)>>initialize<br>
>>>> > Receiver: BufferedAsyncFileReadStream: 'pipeReader'<br>
>>>> > Arguments and temporary variables:<br>
>>>> ><br>
>>>> > Receiver's instance variables:<br>
>>>> ><br>
>>>> ><br>
>>>> > BufferedAsyncFileReadStream class(AttachableFileStream<br>
>>>> > class)>>name:attachTo:writable:<br>
>>>> > Receiver: BufferedAsyncFileReadStream<br>
>>>> > Arguments and temporary variables:<br>
>>>> > aSymbolOrString: 'pipeReader'<br>
>>>> > anIOHandle: #[93 179 159 128 0 0 0 0 48 162 123 2 0 0 0 0 0 0 0 0 0 0 0 0]<br>
>>>> > readWriteFlag: false<br>
>>>> > Receiver's instance variables:<br>
>>>> > superclass: AsyncFileReadStream<br>
>>>> > methodDict: a<br>
>>>> > MethodDictionary(#actAsExecutor->(BufferedAsyncFileReadStream>>#a...etc...<br>
>>>> > format: 65552<br>
>>>> > instanceVariables: #('nonBlockingMode' 'readBuffer' 'readSyncSemaphore'<br>
>>>> > 'dataAv...etc...<br>
>>>> > organization: ('finalization' actAsExecutor)<br>
>>>> > ('read ahead buffer' appendAllToBuffer:...etc...<br>
>>>> > subclasses: nil<br>
>>>> > name: #BufferedAsyncFileReadStream<br>
>>>> > classPool: nil<br>
>>>> > sharedPools: nil<br>
>>>> > environment: Smalltalk<br>
>>>> > category: #'OSProcess-Base'<br>
>>>> ><br>
>>>> ><br>
>>>> > --- The full stack ---<br>
>>>> > AioEventHandler(Object)>>notify:<br>
>>>> > [] in AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > BlockClosure>>cull:<br>
>>>> > [] in Context>>handleSignal:<br>
>>>> > BlockClosure>>ensure:<br>
>>>> > Context>>handleSignal:<br>
>>>> > Warning(Exception)>>signal<br>
>>>> > Warning(Exception)>>signal:<br>
>>>> > Warning class>>signal:<br>
>>>> > AioEventHandler(Object)>>notify:<br>
>>>> > AioEventHandler>>aioEnable:forSemaphore:externalObject:<br>
>>>> > [] in AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > BlockClosure>>on:do:<br>
>>>> > AioEventHandler>>initializeForExceptions:readEvents:writeEvents:<br>
>>>> > AioEventHandler>>forFileStream:exceptions:readEvents:writeEvents:<br>
>>>> > AioEventHandler class>>forFileStream:exceptions:readEvents:writeEvents:<br>
>>>> > BufferedAsyncFileReadStream(AsyncFileReadStream)>>enableEventHandling<br>
>>>> > BufferedAsyncFileReadStream(AsyncFileReadStream)>>initialize<br>
>>>> > BufferedAsyncFileReadStream class(AttachableFileStream<br>
>>>> > class)>>name:attachTo:writable:<br>
>>>> >  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>
>>>> > AttachableFileStream>>asBufferedAsyncFileReadStream<br>
>>>> > ExternalPipe>>setBufferedReader<br>
>>>> > PipeableOSProcess(PipeJunction)>>enableOutputStreamTriggers<br>
>>>> > PipeableOSProcess>>enableEventTriggers<br>
>>>> > PipeableOSProcess(PipeJunction)>>prepareOutputForInternalReader<br>
>>>> > PipeableOSProcess>>prepareOutputForInternalReader<br>
>>>> > PipeableOSProcess(PipeJunction)>>prepareOutputFor:<br>
>>>> > ProxyPipeline>>fromString:shell:<br>
>>>> > ProxyPipeline class>>fromString:shell:<br>
>>>> > CommandShell>>pipelineCollectionFrom:<br>
>>>> > CommandShell>>evaluateOrMakePipelinesFrom:<br>
>>>> > CommandShell>>command:echo:<br>
>>>> > [] in CommandShell>>processCommand:echo:<br>
>>>> > [] in BlockClosure>>newProcess<br>
>>>><br>
</blockquote></div>