[BUG][Base][vw7.3.1] -- interrupted system call on reading a file

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[BUG][Base][vw7.3.1] -- interrupted system call on reading a file

Mark Ballard-2
I got an "interrupted system call" upon reading an existing file.  A
subsequent read worked fine.  Seems like the metohd
        FileConnection class openFileNamed:mode:creationRule:
should be protected with a handler for OsNeedRetryError as is
        SocketAccessor primReadInto:startingAt:for: {private}


2) Also, these methods are sending the backward compatibility
protocol, ex restart
instead of
        ex retry

SocketAccessor primReadInto:startingAt:for: {private}
SocketAccessor primWriteFrom:startingAt:for: {private}



Supporting info for the "interrrupted system call"...


The stack dump below shows opening a readStream on an existing file when
the system error occured.  The error was an OSNeedRetryError error. A
subsequent try to read the file worked fine.

Window Title: Dialog Box
  HandleRegistry))evaluateWithFullProtection:
  HandleRegistry))registerValueOf:
  UnixDiskFileAccessor class(OSHandle class)))handleValue:
  IOAccessor class))openFileNamed:direction:creation:
  FileConnection))open
  FileConnection))setName:mode:creationRule:
  optimized [] in [] in FileConnection
class))openFileNamed:mode:creationRule:
  BlockClosure))on:do:
  optimized [] in FileConnection class))openFileNamed:mode:creationRule:
  BlockClosure))on:do:
  FileConnection class))openFileNamed:mode:creationRule:
  FileEncodedStreamConstructor))readStream
  UnixFilename(Filename)))readStream
  MasterEDIFReader))privateStandardEDIFFor:fromFileNamed:constructorClass:
  MasterEDIFReader))standardLibraryEDIFFor:fromFileNamed:
  optimized [] in ADSLibraryBrowser class))circuitFromEDIF:for:
  optimized [] in QuitButtonBox class))criticalSection:
  BlockClosure))on:do:
  QuitButtonBox class))criticalSection:
  ADSLibraryBrowser class(ADSMDSApplicationModel class)))criticalSection:
  ADSLibraryBrowser class))circuitFromEDIF:for:
  optimized [] in ADSLibraryBrowser
class))installLibraryCircuitsFromBOMEDIFDescriptions:comparingWith:directoryName:pattern:oldLibrary:newLibrary:

  OrderedCollection))do:
  ADSLibraryBrowser
class))installLibraryCircuitsFromBOMEDIFDescriptions:comparingWith:directoryName:pattern:oldLibrary:newLibrary:

  ADSLibraryBrowser))installLibraryFromDescription:isStandardLibrary:
  optimized [] in ADSLibraryLocationDescription
class))installStandardLibrary:forLibraryReferences:
  Array(SequenceableCollection)))do:
  ADSLibraryLocationDescription
class))installStandardLibrary:forLibraryReferences:
  optimized [] in ADSLibraryBrowser))updateInstalledStandardProcess
  BlockClosure))on:do:
  optimized [] in [] in QuitButtonBox))errorHandledManagedBlock
  BlockClosure))on:do:
  optimized [] in QuitButtonBox))errorHandledManagedBlock
  optimized [] in [] in QuitButtonBox))abortHandledManagedBlock
  BlockClosure))ensure:
  optimized [] in QuitButtonBox))abortHandledManagedBlock
  BlockClosure))on:do:
  optimized [] in Process class))forBlock:priority:

  ----------------------------------------------------------------------
  HandleRegistry))evaluateWithFullProtection:
  Receiver:
         a HandleRegistry
  Instance Variables:
         tally = 2
         valueArray = WeakArray[163] (nil nil nil an active
UnixDiskFileAccessor nil nil nil an active UnixDiskFileAccessor nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil

   \(cont) nil nil nil nil nil nil nil nil nil nil ...etc...)
         executors = Array[163] (nil nil nil an active
UnixDiskFileAccessor nil nil nil an active UnixDiskFileAccessor nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil

   \(cont) nil nil nil nil nil nil nil nil nil nil ...etc...)
         accessLock = a RecursionLock
  Arguments:
         t1 = BlockClosure [] in HandleRegistry))registerValueOf:
  Temporaries:
         t2 = an OsNeedRetryError
         t3 = nil
         t4 = an OsNeedRetryError
  Context PC = 39

  ----------------------------------------------------------------------
  HandleRegistry))registerValueOf:
  Receiver:
         a HandleRegistry
  Instance Variables:
         tally = 2
         valueArray = WeakArray[163] (nil nil nil an active
UnixDiskFileAccessor nil nil nil an active UnixDiskFileAccessor nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil

   \(cont) nil nil nil nil nil nil nil nil nil nil ...etc...)
         executors = Array[163] (nil nil nil an active
UnixDiskFileAccessor nil nil nil an active UnixDiskFileAccessor nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil

   \(cont) nil nil nil nil nil nil nil nil nil nil ...etc...)
         accessLock = a RecursionLock
  Arguments:
         t1 = BlockClosure [] in OSHandle class))handleValue:
  Context PC = 9

  ----------------------------------------------------------------------
  UnixDiskFileAccessor class(OSHandle class)))handleValue:
  Receiver:
         an UnixDiskFileAccessor class
  Instance Variables:
         superclass = UnixIOAccessor
         methodDict = MethodDictionary[6] (CompiledMethod
UnixDiskFileAccessor))isSeekable CompiledMethod
UnixDiskFileAccessor))lock:for: CompiledMethod
UnixDiskFileAccessor))commit CompiledMethod
UnixDiskFileAccessor))unixFileDescriptor CompiledMethod
UnixDiskFileAccessor))connectionClass

   \(cont) CompiledMethod UnixDiskFileAccessor))readWriteStream )
         format = 16386
         subclasses = nil
         instanceVariables = nil
         organization = ('locking' #lock:for:)
  ('accessing' #commit #unixFileDescriptor)
  ('defaults' #connectionClass)
  ('stream creation' #readWriteStream)
  ('testing' #isSeekable)

         name = #'UnixDiskFileAccessor'
         classPool = nil
         environment = NameSpace[82] (BlockableIOAccessor
ExternalReadStream NameSpace[7] (Core.Character cr 3 Core.Character lf 5
2 1 4 ) SocketAddress MacDiskFileAccessor WinSocketAccessor
ExternalDictionary[0] () IOAccessor MacOSFilename ExternalDictionary[20]
(struct STARTUPINFO LPSIZE DWORD LPBYTE

   \(cont) struct OVERLAPPED LPCTSTR LPTSTR struct PROCESS_INFORMATION
HDC WORD struct SECURITY_ATTRIBUTES BOOL HANDLE BYTE LPCTSR LPHANDLE
LPVOID LPSTR LPCSTR SIZE ) ...etc...)

  Arguments:
         t1 = BlockClosure [] in IOAccessor
class))openFileNamed:direction:creation:
  Context PC = 10

  ----------------------------------------------------------------------
  IOAccessor class))openFileNamed:direction:creation:
  Receiver:
         an IOAccessor class
  Instance Variables:
         superclass = OSHandle
         methodDict = MethodDictionary[43] (CompiledMethod
IOAccessor))printOn: CompiledMethod IOAccessor))close CompiledMethod
IOAccessor))truncateTo: CompiledMethod
IOAccessor))primWriteFrom:startingAt:for: CompiledMethod
IOAccessor))readInto: CompiledMethod IOAccessor))writeWait CompiledMethod

   \(cont) IOAccessor))readInto:startingAt:for: CompiledMethod
IOAccessor))lineEndConvention ...etc...)
         format = 16386
         subclasses = Array[3] (BlockableIOAccessor MacIOAccessor
PCIOAccessor )
         instanceVariables = nil
         organization = ('initialize-release' #close)
  ('accessing' #bufferSize #commit #descriptor #fileSize #truncateTo:)
  ('testing' #isActive #isSeekable)
  ('positioning' #seekTo:)
  ('data transfer' #readInto: #readInto:startingAt:for:
#readInto:startingAt:for:untilFalse: #readInto:untilFalse: #writeAll:
#writeFrom: #writeFrom:startingAt:for:
#writeFrom:startingAt:for:untilFalse: #writeFrom:startingAt:forSure:)

  ('constants' #lineEndConvention #readPauseInterval #writePauseInterval)
  ('connections' #asExternalConnection)
  ('stream creation' #readAppendStream #readStream #writeStream)
  ('printing' #printOn:)
  ('defaults' #connectionClass #defaultClass)
  ('synchronization' #ioWait #ioWaitWithTimeoutMs: #readWait
#readWaitWithTimeoutMs: #setSem:forWrite: #writeWait
#writeWaitWithTimeoutMs:)

  ('finalization' #finalize)
  ('private-primitives' #primBufferSize #primClose #primGetDescriptor
#primGetSize #primReadInto:startingAt:for: #primSeekTo:
#primWriteFrom:startingAt:for:)


         name = #'IOAccessor'
         classPool = NameSpaceOfClass[2] (HandleRegistry[0] ()
UnixIOAccessor )
         environment = NameSpace[82] (BlockableIOAccessor
ExternalReadStream NameSpace[7] (Core.Character cr 3 Core.Character lf 5
2 1 4 ) SocketAddress MacDiskFileAccessor WinSocketAccessor
ExternalDictionary[0] () IOAccessor MacOSFilename ExternalDictionary[20]
(struct STARTUPINFO LPSIZE DWORD LPBYTE

   \(cont) struct OVERLAPPED LPCTSTR LPTSTR struct PROCESS_INFORMATION
HDC WORD struct SECURITY_ATTRIBUTES BOOL HANDLE BYTE LPCTSR LPHANDLE
LPVOID LPSTR LPCSTR SIZE ) ...etc...)

  Arguments:
         t1 =
'/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif'
         t2 = 0
         t3 = 0
  Context PC = 11

  ----------------------------------------------------------------------
  FileConnection))open
  Receiver:
         a FileConnection
  Instance Variables:
         inputDescriptor = nil
         outputDescriptor = nil
         fileName = a
LogicalFilename('/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif')
         rwmode = #'readOnly'
         creationRule = #'noCreate'
         rememberedPosition = nil
  Context PC = 20

  ----------------------------------------------------------------------
  FileConnection))setName:mode:creationRule:
  Receiver:
         a FileConnection
  Instance Variables:
         inputDescriptor = nil
         outputDescriptor = nil
         fileName = a
LogicalFilename('/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif')
         rwmode = #'readOnly'
         creationRule = #'noCreate'
         rememberedPosition = nil
  Arguments:
         t1 = an
UnixFilename('/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif')
         t2 = #'readOnly'
         t3 = #'noCreate'
  Context PC = 11

  ----------------------------------------------------------------------
  optimized [] in [] in FileConnection
class))openFileNamed:mode:creationRule:
  Receiver:
         an UndefinedObject
  Temporaries:
         .self = FileConnection
         .t1 = an
UnixFilename('/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif')
         .t2 = #'readOnly'
         .t3 = #'noCreate'
  Context PC = 11

  ----------------------------------------------------------------------
  BlockClosure))on:do:
  Receiver:
         a BlockClosure
  Instance Variables:
         method = CompiledBlock [] in [] in FileConnection
class))openFileNamed:mode:creationRule:
         outerContext = nil
         copiedValues = Array[4] (FileConnection an
UnixFilename('/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif')
#'readOnly' #'noCreate' )

  Arguments:
         t1 = OsNoResourcesError
         t2 = BlockClosure [] in [] in FileConnection
class))openFileNamed:mode:creationRule:
  Context PC = 18

  ----------------------------------------------------------------------
  optimized [] in FileConnection class))openFileNamed:mode:creationRule:
  Receiver:
         an UndefinedObject
  Temporaries:
         .self = FileConnection
         .t1 = an
UnixFilename('/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif')
         .t2 = #'readOnly'
         .t3 = #'noCreate'
  Context PC = 20

  ----------------------------------------------------------------------
  BlockClosure))on:do:
  Receiver:
         a BlockClosure
  Instance Variables:
         method = CompiledBlock [] in FileConnection
class))openFileNamed:mode:creationRule:
         outerContext = nil
         copiedValues = Array[4] (FileConnection an
UnixFilename('/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif')
#'readOnly' #'noCreate' )

  Arguments:
         t1 = OsError
         t2 = BlockClosure [] in FileConnection
class))openFileNamed:mode:creationRule:
  Context PC = 18

  ----------------------------------------------------------------------
  FileConnection class))openFileNamed:mode:creationRule:
  Receiver:
         a FileConnection class
  Instance Variables:
         superclass = ExternalConnection
         methodDict = MethodDictionary[14] (CompiledMethod
FileConnection))name CompiledMethod FileConnection))open CompiledMethod
FileConnection))defaultIoBuffer CompiledMethod FileConnection))dataSize
CompiledMethod FileConnection))fileName CompiledMethod
FileConnection))isActive CompiledMethod

   \(cont) FileConnection))rememberPosition: CompiledMethod
FileConnection))logicalName ...etc...)
         format = 16390
         subclasses = nil
         instanceVariables = Array[4] ('fileName' 'rwmode'
'creationRule' 'rememberedPosition' )
         organization = ('accessing' #dataSize #fileName #logicalName #name)
  ('io buffer creation' #defaultIoBuffer #defaultIoBufferInMode:)
  ('testing' #canPersist)
  ('status' #isActive #open)
  ('persistence' #rememberedPosition #rememberPosition: #revive)
  ('private' #setName:mode:creationRule:)
  ('accessing-unix' #unixFileDescriptor)

         name = #'FileConnection'
         classPool = nil
         environment = NameSpace[82] (BlockableIOAccessor
ExternalReadStream NameSpace[7] (Core.Character cr 3 Core.Character lf 5
2 1 4 ) SocketAddress MacDiskFileAccessor WinSocketAccessor
ExternalDictionary[0] () IOAccessor MacOSFilename ExternalDictionary[20]
(struct STARTUPINFO LPSIZE DWORD LPBYTE

   \(cont) struct OVERLAPPED LPCTSTR LPTSTR struct PROCESS_INFORMATION
HDC WORD struct SECURITY_ATTRIBUTES BOOL HANDLE BYTE LPCTSR LPHANDLE
LPVOID LPSTR LPCSTR SIZE ) ...etc...)

  Arguments:
         t1 = an
UnixFilename('/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif')
         t2 = #'readOnly'
         t3 = #'noCreate'
  Context PC = 16

  ----------------------------------------------------------------------
  FileEncodedStreamConstructor))readStream
  Receiver:
         a FileEncodedStreamConstructor
  Instance Variables:
         dataRepository = an
UnixFilename('/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif')
         encoding = #'default'
  Context PC = 9

  ----------------------------------------------------------------------
  UnixFilename(Filename)))readStream
  Receiver:
         an UnixFilename
  Instance Variables:
         osName = ByteArray[72] (47 116 111 111 108 115 47 97 100 115 47
108 105 98 47 73 66 77 95 115 105 103 101 55 104 112 47 104 98 116 95 68
105 103 67 101 108 108 115 47 49 97 49 53 47 104 98 116 95 68 105 103 67
101 108 108 115 95 115 103 55 95 108 109 50 100 48 46 101 100 105 102 )

         publicName =
'/tools/ads/lib/IBM_sige7hp/hbt_DigCells/1a15/hbt_DigCells_sg7_lm2d0.edif'
         logicalName = nil
  Context PC = 7


<unintersing stuff leading to readStream removed...>


  Version Id:
         #[57 29 58 144 73 1 0 0 57 29 58 144]
  Patches:
         (none)
  Parcels:
         AT Profiling Core Version '7.3' of 11/22/04 3:09:51 pm
         AT System Analysis Version '7.2' of 10/20/03 12:39:45 pm
         Base64Encoding Version '1.3 014' of 11/4/04 8:03:22 pm
         BOSS Version '7.3.1' of 4/10/05 5:51:21 pm
         Browser-BaseUI Version '7.3.1' of 4/10/05 5:51:59 pm
         Browser-BrowserUI Version '7.3.1' of 4/10/05 5:52:10 pm
         Browser-ChangeObjects Version '7.3.1' of 4/10/05 5:51:45 pm
         Browser-Environments Version '7.3.1' of 4/10/05 5:51:42 pm
         Browser-Namespace Version '7.3.1' of 4/10/05 5:51:31 pm
         Browser-Parser Version '7.3.1' of 4/10/05 5:51:32 pm
         Browser-Refactorings Version '7.3.1' of 4/10/05 5:51:50 pm
         Browser-RefactoringUI Version '7.3.1' of 4/10/05 5:52:09 pm
         Browser-Smalllint Version '7.3.1' of 4/10/05 5:52:23 pm
         Browser-SmalllintUI Version '7.3.1' of 4/10/05 5:52:26 pm
         Database Version '7.3.1' of 4/10/05 5:51:16 pm
         Database-Namespace Version '7.3.1' of 4/10/05 5:51:30 pm
         Debugger-Browser Extensions Version '7.3.1' of 4/10/05 5:54:24 pm
         Debugger-Compiler-Modifications Version '7.3.1' of 4/10/05
5:54:07 pm
         Debugger-Exception-Modifications Version '7.3.1' of 4/10/05
5:54:18 pm
         Debugger-Load All Version '7.3.1' of 4/10/05 5:54:24 pm
         Debugger-Probes Version '7.3.1' of 4/10/05 5:54:08 pm
         Debugger-Process Monitor Version '7.3.1' of 4/10/05 5:54:23 pm
         Debugger-StackInspector Version '7.3.1' of 4/10/05 5:54:19 pm
         Debugger-Support Version '7.3.1' of 4/10/05 5:54:15 pm
         Debugger-Tools-Modifications Version '7.3.1' of 4/10/05 5:54:19 pm
         Debugger-UI Version '7.3.1' of 4/10/05 5:54:20 pm
         DLLCC Version '7.3.1' of 4/10/05 6:39:24 pm
         HashesBase Version '7.3.1' of 4/10/05 6:42:06 pm
         Headless Version '7.3.1' of 4/10/05 6:40:39 pm
         LDM-Framework Version '7.3.1' of 4/10/05 5:51:24 pm
         Lens-Namespace Version '7.3.1' of 4/10/05 5:51:31 pm
         Lens-Runtime Version '7.3.1' of 4/10/05 7:11:06 pm
         LoggingTool Version '7.3.1' of 4/10/05 5:51:30 pm
         MD5 Version '7.3.1' of 4/10/05 6:42:09 pm
         Method-History Version '7.2' of 10/20/03 12:55:43 pm
         NetNamespace Version '7.3.1' of 4/20/05 11:33:02 am
         OldBrowsers Version '7.3.1' of 4/10/05 5:52:59 pm
         PackageCategories Version '7.3.1' of 4/20/05 11:33:03 am
         PostgreSQLDriver Version '1.3 014' of 11/4/04 8:03:14 pm
         PostgreSQLEXDI Version '1.3 014' of 11/4/04 8:03:26 pm
         PostgreSQLLogging Version '1.3 014' of 11/4/04 8:03:19 pm
         PostgreSQLVWCompatibility Version '1.3 014' of 11/4/04 8:03:10 pm
         Refactory-Namespace Version '7.3.1' of 4/10/05 5:51:31 pm
         SecurityBase Version '7.3.1' of 4/10/05 6:42:03 pm
         StoreBase Version '7.3.1' of 4/10/05 5:50:25 pm
         StoreForPostgreSQL Version '1.3 014' of 11/4/04 8:03:29 pm
         SUnit Version 'Camp Smalltalk 3.1 RC2' of 3/22/03 8:13:37 am
         SUnitPreload Version 'Camp Smalltalk 3.1 RC1' of 3/19/03 3:52:39 am
         SUnitUI Version 'Camp Smalltalk 3.1 RC1' of 3/20/03 3:21:56 am
         T-Gen Version '5.0a' of 11/7/00 6:34:00 pm
         T-Gen Core Version '5.0a' of 11/7/00 6:36:07 pm
         T-Gen Development Version '5.0a' of 3/12/02 9:17:22 am
         T-Gen Testing Version '5.0a' of 11/7/00 6:35:12 pm
         Tools-Changes Version '7.3.1' of 4/10/05 5:52:28 pm
         Tools-File Browser Version '7.3.1' of 4/10/05 5:52:52 pm
         Tools-Parcel Manager Version '7.3.1' of 4/10/05 5:52:49 pm
         Tools-Settings Version '7.3.1' of 4/10/05 5:52:44 pm
         Tools-Settings-VW Version '7.3.1' of 4/10/05 5:52:57 pm
         Tools-Trippy Version '7.3.1' of 4/10/05 5:52:36 pm
         Tools-Workspace Version '7.3.1' of 4/10/05 5:52:32 pm
         UIPainter Version '7.3.1' of 4/10/05 6:39:45 pm
         URISupport Version '7.3.1' of 4/20/05 11:33:00 am
         WinProcess Version '7.1' of 3/11/03 9:05:47 am
         XML Version '7.3.1' of 4/20/05 11:32:51 am
         XML-source Version '7.3.1' of 4/20/05 11:32:58 am


  CompanyID : 80265
  CompanyName : Tektronix
  ContactName : Mark B. Ballard
  Email : [hidden email]
  PhoneNumber : xxxxxx
  Fax :
  Severity : 03
  CountryCode : USA

--
[hidden email]
(503) 627-5890  Desk   (503) 627-1388  Fax