[GemStone-Smalltalk] Delegate GCed before client object

David Shaffer shaffer at shaffer-consulting.com
Wed Nov 17 10:42:08 PST 2021


Just following up in case future travelers see this…this was, indeed due to thread contention.  Using GbsSession>>critical: (as documented) in this errant thread and the main thread worked around the bug (I have GS objects leaking into one of my services).

-D

> On Nov 17, 2021, at 12:48 AM, David Shaffer <shaffer at SHAFFER-CONSULTING.COM> wrote:
> 
> This is the same application described in my previous email (the one that restarts every 2 hours).  I’m now dead in the water with the following error occurring on the VW client within a couple minutes of startup each time.  I’m at a loss as to where to look for root causes for this…I’m guessing I’m doing something that I shouldn’t.  My first guess was threading…but I’ve gone to great lengths to avoid any DB objects ending up in the other threads.  If that seems like a likely culprit, I’ll dig deeper.  Any hints? :)
> 
> -David
> 
> 
> Unhandled exception: GBS Error - Delegate GCed before client object
> 
> ----------------------------------------------------------------------
> GbxMessageDispatcher>>basicRaise:message:
> Receiver:
> 	a GbxMessageDispatcher
> Instance Variables:
> 	handler = a CstMessageHandlerVw
> Arguments:
> 	errorSignal = GemStone.Gbs.GbsInterfaceError
> 	errorString = 'GBS Error - Delegate GCed before client object'
> Context PC = 4
> 
> ----------------------------------------------------------------------
> GbxMessageDispatcher>>raise:message:withArguments:
> Receiver:
> 	a GbxMessageDispatcher
> Instance Variables:
> 	handler = a CstMessageHandlerVw
> Arguments:
> 	errorSignal = GemStone.Gbs.GbsInterfaceError
> 	aString = 'GBS Error - Delegate GCed before client object'
> 	args = an Array[0]
> Temporaries:
> 	string = 'GBS Error - Delegate GCed before client object'
> Context PC = 12
> 
> ----------------------------------------------------------------------
> GbxMessageDispatcher>>raise:message:
> Receiver:
> 	a GbxMessageDispatcher
> Instance Variables:
> 	handler = a CstMessageHandlerVw
> Arguments:
> 	errorSignal = GemStone.Gbs.GbsInterfaceError
> 	aString = 'GBS Error - Delegate GCed before client object'
> Context PC = 7
> 
> ----------------------------------------------------------------------
> GbxMessageDispatcher>>basicError:
> Receiver:
> 	a GbxMessageDispatcher
> Instance Variables:
> 	handler = a CstMessageHandlerVw
> Arguments:
> 	aString = 'Delegate GCed before client object'
> Context PC = 14
> 
> ----------------------------------------------------------------------
> GbxMessageDispatcher(CstMessageDispatcher)>>error:withArguments:
> Receiver:
> 	a GbxMessageDispatcher
> Instance Variables:
> 	handler = a CstMessageHandlerVw
> Arguments:
> 	aString = 'Delegate GCed before client object'
> 	args = an Array[0]
> Temporaries:
> 	string = 'Delegate GCed before client object'
> Context PC = 11
> 
> ----------------------------------------------------------------------
> GbxMessageDispatcher(CstMessageDispatcher)>>error:
> Receiver:
> 	a GbxMessageDispatcher
> Instance Variables:
> 	handler = a CstMessageHandlerVw
> Arguments:
> 	aString = 'Delegate GCed before client object'
> Context PC = 6
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxServerMapTableSegment>>beStrongAndFinalizeIntoNoLongerReplicatedBuffer:gcedBuffer:
> Receiver:
> 	a GemStone.Gbs.GbxServerMapTableSegment
> Instance Variables:
> 	upperBytes = 0
> 	parent = a GemStone.Gbs.GbxServerMapNode
> 	parentIndex = 153
> 	needFinalization = true
> Arguments:
> 	noLongerReplicatedBuffer = GbxL8OopArray()
> 	gcedBuffer = GbxL8OopArray(16r4BD60E01 16r5CF78E01 16r4BD61001 16r5CF79001 16r4BD5E601 16r4BD5E801 16r5CFC4F01 16r5CFC5101 16r5CFBEE01 16r5CFBF001 16r5CF77101 16r55F26901 16r5CFC2C01 16r4BD60701 16r5CF78D01 16r4BD60F01 16r5CF78F01 16r4BD5E701 16r5CFBA501 16r5CFC4E01 16r5CFC5001 )
> Temporaries:
> 	tombstoneIndex = 729
> 	offsetFromKey = 2
> 	key = 6080341
> 	delegate = nil
> 	clientObj = November 17, 2021 0:00:00.000
> Context PC = 168
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxServerMapNode>>beStrongAndFinalizeIntoNoLongerReplicatedBuffer:gcedBuffer:
> Receiver:
> 	a GemStone.Gbs.GbxServerMapNode
> Instance Variables:
> 	upperBytes = 0
> 	notCachedToken = 'Not cached'
> 	owningMap = a GemStone.Gbs.GbxServerMap
> 	parentIndex = 1
> 	tableSize = 221813
> 	tally = 128835
> Arguments:
> 	noLongerReplicatedBuffer = GbxL8OopArray()
> 	gcedBuffer = GbxL8OopArray(16r4BD60E01 16r5CF78E01 16r4BD61001 16r5CF79001 16r4BD5E601 16r4BD5E801 16r5CFC4F01 16r5CFC5101 16r5CFBEE01 16r5CFBF001 16r5CF77101 16r55F26901 16r5CFC2C01 16r4BD60701 16r5CF78D01 16r4BD60F01 16r5CF78F01 16r4BD5E701 16r5CFBA501 16r5CFC4E01 16r5CFC5001 )
> Temporaries:
> 	minimumTableSize = nil
> 	i = 153
> Context PC = 20
> 
> ----------------------------------------------------------------------
> optimized [] in GemStone.Gbs.GbxServerMap>>beStrongAndFinalizeIntoNoLongerReplicatedBuffer:gcedBuffer:
> Receiver:
> 	an UndefinedObject
> Arguments:
> 	node = a GemStone.Gbs.GbxServerMapNode
> Temporaries:
> 	.noLongerReplicatedBuffer = GbxL8OopArray()
> 	.gcedBuffer = GbxL8OopArray(16r4BD60E01 16r5CF78E01 16r4BD61001 16r5CF79001 16r4BD5E601 16r4BD5E801 16r5CFC4F01 16r5CFC5101 16r5CFBEE01 16r5CFBF001 16r5CF77101 16r55F26901 16r5CFC2C01 16r4BD60701 16r5CF78D01 16r4BD60F01 16r5CF78F01 16r4BD5E701 16r5CFBA501 16r5CFC4E01 16r5CFC5001 )
> Context PC = 7
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxServerMap(GemStone.Gbs.GbxOopKeyedDictionary)>>nodesDo:
> Receiver:
> 	a GemStone.Gbs.GbxServerMap
> Instance Variables:
> 	numNodeSlots = 64
> 	notCachedToken = 'Not cached'
> 	session = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	isWeak = false
> Arguments:
> 	aBlock = BlockClosure [] in GemStone.Gbs.GbxServerMap>>beStrongAndFinalizeIntoNoLongerReplicatedBuffer:gcedBuffer:
> Temporaries:
> 	i = 1
> 	node = a GemStone.Gbs.GbxServerMapNode
> Context PC = 23
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxServerMap>>beStrongAndFinalizeIntoNoLongerReplicatedBuffer:gcedBuffer:
> Receiver:
> 	a GemStone.Gbs.GbxServerMap
> Instance Variables:
> 	numNodeSlots = 64
> 	notCachedToken = 'Not cached'
> 	session = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	isWeak = false
> Arguments:
> 	noLongerReplicatedBuffer = GbxL8OopArray()
> 	gcedBuffer = GbxL8OopArray(16r4BD60E01 16r5CF78E01 16r4BD61001 16r5CF79001 16r4BD5E601 16r4BD5E801 16r5CFC4F01 16r5CFC5101 16r5CFBEE01 16r5CFBF001 16r5CF77101 16r55F26901 16r5CFC2C01 16r4BD60701 16r5CF78D01 16r4BD60F01 16r5CF78F01 16r4BD5E701 16r5CFBA501 16r5CFC4E01 16r5CFC5001 )
> Context PC = 15
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxGciSingleTripInterface(GemStone.Gbs.GbxServerInterface)>>finalizeIntoNoLongerReplicatedBuffer:gcedBuffer:
> Receiver:
> 	a GemStone.Gbs.GbxGciSingleTripInterface
> Instance Variables:
> 	alteredOopBuffer = nil
> 	byteFetchBuffer = nil
> 	callSequencer = a GemStone.Gbs.GbxNonBlockingGciCallSequencer
> 	clampedTravArgsBuffer = GbxGciClampedTravArgsSType with:
> 	clampSpec = 1560322305
> 	travBuff = 140394453450832
> 	level = 4
> 	retrievalFlags = 272
> 	resultOop = 1101174273
> 	dirtyOopBuffer = nil
> 	eventDetector = a GbxWaitingEventDetector
> 	gcedOopBuffer = GbxL8OopArray(16r4BD60E01 16r5CF78E01 16r4BD61001 16r5CF79001 16r4BD5E601 16r4BD5E801 16r5CFC4F01 16r5CFC5101 16r5CFBEE01 16r5CFBF001 16r5CF77101 16r55F26901 16r5CFC2C01 16r4BD60701 16r5CF78D01 16r4BD60F01 16r5CF78F01 16r4BD5E701 16r5CFBA501 16r5CFC4E01 16r5CFC5001 )
> 	longHolderBuffer = nil
> 	longHolderBuffer2 = nil
> 	needMoreTraversal = false
> 	oopFetchBuffer = GbxL8OopArray(16r5CF83501 16r11A01 16r5D00A101 16r5D00A001 16r5D009F01 16r5D009E01 16r5D009D01 16r5D009C01 16r5D009B01 16r5D009A01 16r5D009901 16r5D009801 16r5D009701 16r5D009601 16r5D009501 16r5D009401 16r5D009301 16r5D009201 16r5D009101 16r5D009001 16r5D008F01 16r5D008E01 16r5D008D01 16r5D008C01 16r5D008B01 16r5D008A01 16r5D008901 16r5D008801 16r5D008701 16r5D008601 16r5D008501 16r5D008401 16r5D008301 16r5D008201 16r5D008101 16r5D008001 16r5D007F01 16r5D007E01 16r5D007D01 16r5D007C01 16r5D007B01 16r5D007A01 16r5D007901 16r5D007801 16r5D007701 16r5D007601 16r5D007501 16r5D007401 16r5D007301 16r5D007201 16r5D007101 16r5D007001 16r5D006F01 16r5D006E01 16r5D006D01 16r5D006C01 16r5D006B01 16r5D006A01 16r5D006901 16r5D006801 16r5D006701 16r5D006601 16r5D006501 16r5D006401 16r5D006301 16r5D006201 16r5D006101 16r5D006001 16r5D005F01 )
> 	oopsNoLongerReplicatedBuffer = GbxL8OopArray()
> 	singleStepIsRequested = false
> 	storeTravDoArgsBuffer = GbxGciStoreTravDoArgsSType64v31 with:
> 	doPerform = 3
> 	doFlags = 0
> 	alteredNumOops = 0
> 	alteredCompleted = false
> 	receiver = 1101174273
> 	selector = a CPointer {invalid} (const char * )
> 	args = a CPointer {invalid} (const OopType * )
> 	numArgs = 0
> 	environmentId = 0
> 	storeTravBuff = a CPointer {039E31C8} (ByteType * )
> 	alteredTheOops = a CPointer {invalid} (OopType * )
> 	storeTravFlags = 11
> 	noLongerReplicatedOops = a Set[0]
> 	thisSession = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	traversalBufferManager = a GemStone.Gbs.GbxTraversalBufferManager
> Arguments:
> 	noLongerReplicatedBuffer = GbxL8OopArray()
> 	gcedBuffer = GbxL8OopArray(16r4BD60E01 16r5CF78E01 16r4BD61001 16r5CF79001 16r4BD5E601 16r4BD5E801 16r5CFC4F01 16r5CFC5101 16r5CFBEE01 16r5CFBF001 16r5CF77101 16r55F26901 16r5CFC2C01 16r4BD60701 16r5CF78D01 16r4BD60F01 16r5CF78F01 16r4BD5E701 16r5CFBA501 16r5CFC4E01 16r5CFC5001 )
> Temporaries:
> 	cache = a GemStone.Gbs.GbxServerMap
> Context PC = 15
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxGciSingleTripInterface(GemStone.Gbs.GbxServerInterface)>>makeCacheStrongAndFinalizeIntoBuffers
> Receiver:
> 	a GemStone.Gbs.GbxGciSingleTripInterface
> Instance Variables:
> 	alteredOopBuffer = nil
> 	byteFetchBuffer = nil
> 	callSequencer = a GemStone.Gbs.GbxNonBlockingGciCallSequencer
> 	clampedTravArgsBuffer = GbxGciClampedTravArgsSType with:
> 	clampSpec = 1560322305
> 	travBuff = 140394453450832
> 	level = 4
> 	retrievalFlags = 272
> 	resultOop = 1101174273
> 	dirtyOopBuffer = nil
> 	eventDetector = a GbxWaitingEventDetector
> 	gcedOopBuffer = GbxL8OopArray(16r4BD60E01 16r5CF78E01 16r4BD61001 16r5CF79001 16r4BD5E601 16r4BD5E801 16r5CFC4F01 16r5CFC5101 16r5CFBEE01 16r5CFBF001 16r5CF77101 16r55F26901 16r5CFC2C01 16r4BD60701 16r5CF78D01 16r4BD60F01 16r5CF78F01 16r4BD5E701 16r5CFBA501 16r5CFC4E01 16r5CFC5001 )
> 	longHolderBuffer = nil
> 	longHolderBuffer2 = nil
> 	needMoreTraversal = false
> 	oopFetchBuffer = GbxL8OopArray(16r5CF83501 16r11A01 16r5D00A101 16r5D00A001 16r5D009F01 16r5D009E01 16r5D009D01 16r5D009C01 16r5D009B01 16r5D009A01 16r5D009901 16r5D009801 16r5D009701 16r5D009601 16r5D009501 16r5D009401 16r5D009301 16r5D009201 16r5D009101 16r5D009001 16r5D008F01 16r5D008E01 16r5D008D01 16r5D008C01 16r5D008B01 16r5D008A01 16r5D008901 16r5D008801 16r5D008701 16r5D008601 16r5D008501 16r5D008401 16r5D008301 16r5D008201 16r5D008101 16r5D008001 16r5D007F01 16r5D007E01 16r5D007D01 16r5D007C01 16r5D007B01 16r5D007A01 16r5D007901 16r5D007801 16r5D007701 16r5D007601 16r5D007501 16r5D007401 16r5D007301 16r5D007201 16r5D007101 16r5D007001 16r5D006F01 16r5D006E01 16r5D006D01 16r5D006C01 16r5D006B01 16r5D006A01 16r5D006901 16r5D006801 16r5D006701 16r5D006601 16r5D006501 16r5D006401 16r5D006301 16r5D006201 16r5D006101 16r5D006001 16r5D005F01 )
> 	oopsNoLongerReplicatedBuffer = GbxL8OopArray()
> 	singleStepIsRequested = false
> 	storeTravDoArgsBuffer = GbxGciStoreTravDoArgsSType64v31 with:
> 	doPerform = 3
> 	doFlags = 0
> 	alteredNumOops = 0
> 	alteredCompleted = false
> 	receiver = 1101174273
> 	selector = a CPointer {invalid} (const char * )
> 	args = a CPointer {invalid} (const OopType * )
> 	numArgs = 0
> 	environmentId = 0
> 	storeTravBuff = a CPointer {039E31C8} (ByteType * )
> 	alteredTheOops = a CPointer {invalid} (OopType * )
> 	storeTravFlags = 11
> 	noLongerReplicatedOops = a Set[0]
> 	thisSession = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	traversalBufferManager = a GemStone.Gbs.GbxTraversalBufferManager
> Context PC = 14
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxServerInterfaceWithStats>>makeCacheStrongAndFinalizeIntoBuffers
> Receiver:
> 	a GemStone.Gbs.GbxServerInterfaceWithStats
> Instance Variables:
> 	statResource = a GbxSessionStatResource:
> 	bytesSentByStoreTraversal: 213624
> 	bytesTraversed: 7671328
> 	changedObjNotifications: 0
> 	classesMapped: 1970
> 	dirtyPoolSize: 0
> 	freeOopsFetched: 2000
> 	gciCallsToGem: 754
> 	gciCallsToGemTime: 9550798
> 	gciErrors: 0
> 	lostOtRoots: 0
> 	nbEndResultNoProgress: 292
> 	nbEndResultProgressed: 0
> 	nbEndResultReady: 418
> 	objectsStoredByTraversal: 1461
> 	objectsTraversed: 126237
> 	serverMapSize: 128835
> 	sessionProtectInvocations: 153517
> 	sessionSignals: 0
> 	sigAborts: 0
> 	storeTraversals: 101
> 	traversalUnpackingTime: 0
> 	traverseCallTime: 0
> 	traverseCalls: 418
> 	serverInterface = a GemStone.Gbs.GbxGciSingleTripInterface
> Context PC = 3
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbsSessionWithStats(GbsSession)>>startingFirstInteraction:
> Receiver:
> 	a GemStone.Gbs.GbsSessionWithStats
> Instance Variables:
> 	activeInteractions = an IdentitySet[0]
> 	causeOfDeath = nil
> 	clientTimeZone = a CompositeTimeZone
> 	configuration = (GbsConfiguration default
> 	alwaysUseGemCursor: false;
> 	confirm: false;
> 	generateClassConnectors: false;
> 	libraryName: './libgcirpc-3.6.2-64.so';
> 	removeInvalidConnectors: true;
> 	verbose: false;
> 	yourself)
> 	copyReplicationClamp = nil
> 	dependents = nil
> 	dirtyPool = a GemStone.Gbs.GbxDirtyPool
> 	eventHandlers = an IdentityDictionary[6]
> 	eventDetectorErrorHandler = nil
> 	freeOops = a GemStone.Gbs.GbxFreeOopStream
> 	gbsm = a GemStone.Gbs.GbsSessionManagerWithStats
> 	gemTimeZone = a GbxL8Delegate sess: 1 flags: 0 {16r1A11A01}
> 	gsClassOrganizer = nil
> 	isRemote = true
> 	isUnwindingAsyncAbort = false
> 	nestingLevel = 0
> 	notCachedToken = 'Not cached'
> 	parameters = 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	procBalancer = nil
> 	replicatorManager = a GemStone.Gbs.GbxReplicatorManager
> 	serverInterface = a GemStone.Gbs.GbxServerInterfaceWithStats
> 	serverMap = a GemStone.Gbs.GbxServerMap
> 	sessionDisplayString = 'Session 1 (remote) for ''Trade...0055!gs64stone'' @ ''gemstone'''
> 	sessionId = 1
> 	sessionProtect = a GemStone.Gbs.GbxSemaphoreWithStats
> 	specialConverter = a GemStone.Gbs.GbxSpecialConverter64Vw64
> 	stats = a GbxSessionStatResource:
> 	bytesSentByStoreTraversal: 213624
> 	bytesTraversed: 7671328
> 	changedObjNotifications: 0
> 	classesMapped: 1970
> 	dirtyPoolSize: 0
> 	freeOopsFetched: 2000
> 	gciCallsToGem: 754
> 	gciCallsToGemTime: 9550798
> 	gciErrors: 0
> 	lostOtRoots: 0
> 	nbEndResultNoProgress: 292
> 	nbEndResultProgressed: 0
> 	nbEndResultReady: 418
> 	objectsStoredByTraversal: 1461
> 	objectsTraversed: 126237
> 	serverMapSize: 128835
> 	sessionProtectInvocations: 153518
> 	sessionSignals: 0
> 	sigAborts: 0
> 	storeTraversals: 101
> 	traversalUnpackingTime: 0
> 	traverseCallTime: 0
> 	traverseCalls: 418
> 	asyncAbortStartAction = nil
> 	asyncAbortFinishAction = nil
> Arguments:
> 	anInteraction = a GemStone.Gbs.GbxSingleTripServerTraversal for session 1
> replicationSpecSelector: replicationSpec
> , traversal root: a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> Context PC = 7
> 
> ----------------------------------------------------------------------
> optimized [] in GbsSession>>startingInteraction:
> Receiver:
> 	an UndefinedObject
> Temporaries:
> 	.self = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	.anInteraction = a GemStone.Gbs.GbxSingleTripServerTraversal for session 1
> replicationSpecSelector: replicationSpec
> , traversal root: a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> Context PC = 13
> 
> ----------------------------------------------------------------------
> optimized [] in GbsSession>>sessionCritical:
> Receiver:
> 	an UndefinedObject
> Temporaries:
> 	.self = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	.aBlock = BlockClosure [] in GbsSession>>startingInteraction:
> Context PC = 8
> 
> ----------------------------------------------------------------------
> GbxSessionRecursionLock(GbxRecursionLock)>>critical:
> Receiver:
> 	a GbxSessionRecursionLock
> Instance Variables:
> 	firstLink = a Process in GbxSessionRecursionLock(Semaphore)>>waitIfCurtailedSignal
> 	lastLink = a Process in GbxSessionRecursionLock(Semaphore)>>waitIfCurtailedSignal
> 	excessSignals = 0
> 	lockingProcess = a Process in nil
> 	eventDetectorThread = a Process in GemStone.Gbs.GbxCPrimInterface64v32>>gciPollSocket:forRead:
> Arguments:
> 	mutuallyExcludedBlock = BlockClosure [] in GbsSession>>sessionCritical:
> Temporaries:
> 	terminationProtectionBlock = nil
> 	activeProcess = a Process in nil
> Context PC = 10
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxSemaphoreWithStats>>critical:
> Receiver:
> 	a GemStone.Gbs.GbxSemaphoreWithStats
> Instance Variables:
> 	semaphore = a GbxSessionRecursionLock[1]
> 	statAdaptor = a GemStone.Gbs.GbxStatAdaptor
> Arguments:
> 	aBlock = BlockClosure [] in GbsSession>>sessionCritical:
> Temporaries:
> 	result = nil
> 	start = a GemStone.Gbs.GbxStatAdaptor
> Context PC = 8
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbsSessionWithStats(GbsSession)>>sessionCritical:
> Receiver:
> 	a GemStone.Gbs.GbsSessionWithStats
> Instance Variables:
> 	activeInteractions = an IdentitySet[0]
> 	causeOfDeath = nil
> 	clientTimeZone = a CompositeTimeZone
> 	configuration = (GbsConfiguration default
> 	alwaysUseGemCursor: false;
> 	confirm: false;
> 	generateClassConnectors: false;
> 	libraryName: './libgcirpc-3.6.2-64.so';
> 	removeInvalidConnectors: true;
> 	verbose: false;
> 	yourself)
> 	copyReplicationClamp = nil
> 	dependents = nil
> 	dirtyPool = a GemStone.Gbs.GbxDirtyPool
> 	eventHandlers = an IdentityDictionary[6]
> 	eventDetectorErrorHandler = nil
> 	freeOops = a GemStone.Gbs.GbxFreeOopStream
> 	gbsm = a GemStone.Gbs.GbsSessionManagerWithStats
> 	gemTimeZone = a GbxL8Delegate sess: 1 flags: 0 {16r1A11A01}
> 	gsClassOrganizer = nil
> 	isRemote = true
> 	isUnwindingAsyncAbort = false
> 	nestingLevel = 0
> 	notCachedToken = 'Not cached'
> 	parameters = 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	procBalancer = nil
> 	replicatorManager = a GemStone.Gbs.GbxReplicatorManager
> 	serverInterface = a GemStone.Gbs.GbxServerInterfaceWithStats
> 	serverMap = a GemStone.Gbs.GbxServerMap
> 	sessionDisplayString = 'Session 1 (remote) for ''Trade...0055!gs64stone'' @ ''gemstone'''
> 	sessionId = 1
> 	sessionProtect = a GemStone.Gbs.GbxSemaphoreWithStats
> 	specialConverter = a GemStone.Gbs.GbxSpecialConverter64Vw64
> 	stats = a GbxSessionStatResource:
> 	bytesSentByStoreTraversal: 213624
> 	bytesTraversed: 7671328
> 	changedObjNotifications: 0
> 	classesMapped: 1970
> 	dirtyPoolSize: 0
> 	freeOopsFetched: 2000
> 	gciCallsToGem: 754
> 	gciCallsToGemTime: 9550798
> 	gciErrors: 0
> 	lostOtRoots: 0
> 	nbEndResultNoProgress: 292
> 	nbEndResultProgressed: 0
> 	nbEndResultReady: 418
> 	objectsStoredByTraversal: 1461
> 	objectsTraversed: 126237
> 	serverMapSize: 128835
> 	sessionProtectInvocations: 153519
> 	sessionSignals: 0
> 	sigAborts: 0
> 	storeTraversals: 101
> 	traversalUnpackingTime: 0
> 	traverseCallTime: 0
> 	traverseCalls: 418
> 	asyncAbortStartAction = nil
> 	asyncAbortFinishAction = nil
> Arguments:
> 	aBlock = BlockClosure [] in GbsSession>>startingInteraction:
> Context PC = 14
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbsSessionWithStats(GbsSession)>>startingInteraction:
> Receiver:
> 	a GemStone.Gbs.GbsSessionWithStats
> Instance Variables:
> 	activeInteractions = an IdentitySet[0]
> 	causeOfDeath = nil
> 	clientTimeZone = a CompositeTimeZone
> 	configuration = (GbsConfiguration default
> 	alwaysUseGemCursor: false;
> 	confirm: false;
> 	generateClassConnectors: false;
> 	libraryName: './libgcirpc-3.6.2-64.so';
> 	removeInvalidConnectors: true;
> 	verbose: false;
> 	yourself)
> 	copyReplicationClamp = nil
> 	dependents = nil
> 	dirtyPool = a GemStone.Gbs.GbxDirtyPool
> 	eventHandlers = an IdentityDictionary[6]
> 	eventDetectorErrorHandler = nil
> 	freeOops = a GemStone.Gbs.GbxFreeOopStream
> 	gbsm = a GemStone.Gbs.GbsSessionManagerWithStats
> 	gemTimeZone = a GbxL8Delegate sess: 1 flags: 0 {16r1A11A01}
> 	gsClassOrganizer = nil
> 	isRemote = true
> 	isUnwindingAsyncAbort = false
> 	nestingLevel = 0
> 	notCachedToken = 'Not cached'
> 	parameters = 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	procBalancer = nil
> 	replicatorManager = a GemStone.Gbs.GbxReplicatorManager
> 	serverInterface = a GemStone.Gbs.GbxServerInterfaceWithStats
> 	serverMap = a GemStone.Gbs.GbxServerMap
> 	sessionDisplayString = 'Session 1 (remote) for ''Trade...0055!gs64stone'' @ ''gemstone'''
> 	sessionId = 1
> 	sessionProtect = a GemStone.Gbs.GbxSemaphoreWithStats
> 	specialConverter = a GemStone.Gbs.GbxSpecialConverter64Vw64
> 	stats = a GbxSessionStatResource:
> 	bytesSentByStoreTraversal: 213624
> 	bytesTraversed: 7671328
> 	changedObjNotifications: 0
> 	classesMapped: 1970
> 	dirtyPoolSize: 0
> 	freeOopsFetched: 2000
> 	gciCallsToGem: 754
> 	gciCallsToGemTime: 9550798
> 	gciErrors: 0
> 	lostOtRoots: 0
> 	nbEndResultNoProgress: 292
> 	nbEndResultProgressed: 0
> 	nbEndResultReady: 418
> 	objectsStoredByTraversal: 1461
> 	objectsTraversed: 126237
> 	serverMapSize: 128835
> 	sessionProtectInvocations: 153520
> 	sessionSignals: 0
> 	sigAborts: 0
> 	storeTraversals: 101
> 	traversalUnpackingTime: 0
> 	traverseCallTime: 0
> 	traverseCalls: 418
> 	asyncAbortStartAction = nil
> 	asyncAbortFinishAction = nil
> Arguments:
> 	anInteraction = a GemStone.Gbs.GbxSingleTripServerTraversal for session 1
> replicationSpecSelector: replicationSpec
> , traversal root: a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> Context PC = 9
> 
> ----------------------------------------------------------------------
> optimized [] in [] in [] in GemStone.Gbs.GbxServerInteraction>>execute
> Receiver:
> 	an UndefinedObject
> Temporaries:
> 	.self = a GemStone.Gbs.GbxSingleTripServerTraversal for session 1
> replicationSpecSelector: replicationSpec
> , traversal root: a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> 	resultOrError = nil
> 	completeResult = nil
> Context PC = 7
> 
> ----------------------------------------------------------------------
> BlockClosure>>ensure:
> Receiver:
> 	a BlockClosure
> Instance Variables:
> 	method = CompiledBlock [] in [] in [] in GemStone.Gbs.GbxServerInteraction>>execute
> 	outerContext = nil
> 	copiedValues = an Array[3]
> Arguments:
> 	aBlock = BlockClosure [] in [] in [] in GemStone.Gbs.GbxServerInteraction>>execute
> Temporaries:
> 	result = nil
> Context PC = 4
> 
> ----------------------------------------------------------------------
> optimized [] in [] in GemStone.Gbs.GbxServerInteraction>>execute
> Receiver:
> 	an UndefinedObject
> Temporaries:
> 	completeResult = nil
> 	.self = a GemStone.Gbs.GbxSingleTripServerTraversal for session 1
> replicationSpecSelector: replicationSpec
> , traversal root: a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> 	resultOrError = nil
> Context PC = 18
> 
> ----------------------------------------------------------------------
> BlockClosure>>on:do:
> Receiver:
> 	a BlockClosure
> Instance Variables:
> 	method = CompiledBlock [] in [] in GemStone.Gbs.GbxServerInteraction>>execute
> 	outerContext = nil
> 	copiedValues = an Array[2]
> Arguments:
> 	anExceptionSelector = GemStone.Gbs.GbxReturnNotification
> 	handlerBlock = BlockClosure [] in [] in GemStone.Gbs.GbxServerInteraction>>execute
> Context PC = 18
> 
> ----------------------------------------------------------------------
> optimized [] in GemStone.Gbs.GbxServerInteraction>>execute
> Receiver:
> 	an UndefinedObject
> Temporaries:
> 	.self = a GemStone.Gbs.GbxSingleTripServerTraversal for session 1
> replicationSpecSelector: replicationSpec
> , traversal root: a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> 	resultOrError = nil
> Context PC = 15
> 
> ----------------------------------------------------------------------
> BlockClosure>>ifCurtailed:
> Receiver:
> 	a BlockClosure
> Instance Variables:
> 	method = CompiledBlock [] in GemStone.Gbs.GbxServerInteraction>>execute
> 	outerContext = nil
> 	copiedValues = an Array[2]
> Arguments:
> 	terminationBlock = BlockClosure [] in GemStone.Gbs.GbxServerInteraction>>execute
> Context PC = 4
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxSingleTripServerTraversal(GemStone.Gbs.GbxServerInteraction)>>execute
> Receiver:
> 	a GemStone.Gbs.GbxSingleTripServerTraversal
> Instance Variables:
> 	argumentDelegates = nil
> 	arguments = an Array[0]
> 	fetchTraversal = nil
> 	interactionState = a GemStone.Gbs.GbxInteractionState
> 	replicationClampDelegate = a GbxL8Delegate sess: 1 flags: 32 {16r5D00A101}
> 	replication = nil
> 	replicationLevel = 4
> 	replicationScheme = Replication Scheme replicationSpec
> 	resultDelegateOrError = nil
> 	serverInterface = a GemStone.Gbs.GbxServerInterfaceWithStats
> 	session = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	shouldReplicateResultBodyAsDelegates = false
> 	shouldReplicateResult = true
> 	shouldSynchronize = true
> 	statResource = nil
> 	stopForBreakpoints = true
> 	storeTraversal = nil
> 	rootDelegate = a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> Temporaries:
> 	resultOrError = nil
> Context PC = 19
> 
> ----------------------------------------------------------------------
> GbxPointerStub(GbxObjectStub)>>faultToLevel:session:delegate:
> Receiver:
> 	a GbxPointerStub
> Arguments:
> 	levelOrNil = nil
> 	session = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	delegate = a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> Temporaries:
> 	serverTraversal = a GemStone.Gbs.GbxSingleTripServerTraversal for session 1
> replicationSpecSelector: replicationSpec
> , traversal root: a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> 	level = 4
> Context PC = 22
> 
> ----------------------------------------------------------------------
> [] in GbxPointerStub(GbxObjectStub)>>faultToLevel:
> Receiver:
> 	a GbxPointerStub
> Temporaries:
> 	.self = a GbxPointerStub
> 	.levelOrNil = nil
> 	.session = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	.delegate = a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> Context PC = 17
> 
> ----------------------------------------------------------------------
> optimized [] in GbsSession>>sessionCritical:
> Receiver:
> 	an UndefinedObject
> Temporaries:
> 	.self = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	.aBlock = BlockClosure [] in GbxObjectStub>>faultToLevel:
> Context PC = 8
> 
> ----------------------------------------------------------------------
> optimized [] in GbxRecursionLock>>critical:
> Receiver:
> 	an UndefinedObject
> Temporaries:
> 	.activeProcess = a Process in nil
> 	.self = a GbxSessionRecursionLock[1]
> 	.mutuallyExcludedBlock = BlockClosure [] in GbsSession>>sessionCritical:
> Context PC = 8
> 
> ----------------------------------------------------------------------
> BlockClosure>>ensure:
> Receiver:
> 	a BlockClosure
> Instance Variables:
> 	method = CompiledBlock [] in GbxRecursionLock>>critical:
> 	outerContext = nil
> 	copiedValues = an Array[3]
> Arguments:
> 	aBlock = BlockClosure [] in GbxRecursionLock>>critical:
> Temporaries:
> 	result = nil
> Context PC = 4
> 
> ----------------------------------------------------------------------
> GbxSessionRecursionLock(GbxRecursionLock)>>critical:
> Receiver:
> 	a GbxSessionRecursionLock
> Instance Variables:
> 	firstLink = a Process in GbxSessionRecursionLock(Semaphore)>>waitIfCurtailedSignal
> 	lastLink = a Process in GbxSessionRecursionLock(Semaphore)>>waitIfCurtailedSignal
> 	excessSignals = 0
> 	lockingProcess = a Process in nil
> 	eventDetectorThread = a Process in GemStone.Gbs.GbxCPrimInterface64v32>>gciPollSocket:forRead:
> Arguments:
> 	mutuallyExcludedBlock = BlockClosure [] in GbsSession>>sessionCritical:
> Temporaries:
> 	terminationProtectionBlock = BlockClosure [] in GbxRecursionLock>>critical:
> 	activeProcess = a Process in nil
> Context PC = 27
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbxSemaphoreWithStats>>critical:
> Receiver:
> 	a GemStone.Gbs.GbxSemaphoreWithStats
> Instance Variables:
> 	semaphore = a GbxSessionRecursionLock[1]
> 	statAdaptor = a GemStone.Gbs.GbxStatAdaptor
> Arguments:
> 	aBlock = BlockClosure [] in GbsSession>>sessionCritical:
> Temporaries:
> 	result = nil
> 	start = a GemStone.Gbs.GbxStatAdaptor
> Context PC = 8
> 
> ----------------------------------------------------------------------
> GemStone.Gbs.GbsSessionWithStats(GbsSession)>>sessionCritical:
> Receiver:
> 	a GemStone.Gbs.GbsSessionWithStats
> Instance Variables:
> 	activeInteractions = an IdentitySet[0]
> 	causeOfDeath = nil
> 	clientTimeZone = a CompositeTimeZone
> 	configuration = (GbsConfiguration default
> 	alwaysUseGemCursor: false;
> 	confirm: false;
> 	generateClassConnectors: false;
> 	libraryName: './libgcirpc-3.6.2-64.so';
> 	removeInvalidConnectors: true;
> 	verbose: false;
> 	yourself)
> 	copyReplicationClamp = nil
> 	dependents = nil
> 	dirtyPool = a GemStone.Gbs.GbxDirtyPool
> 	eventHandlers = an IdentityDictionary[6]
> 	eventDetectorErrorHandler = nil
> 	freeOops = a GemStone.Gbs.GbxFreeOopStream
> 	gbsm = a GemStone.Gbs.GbsSessionManagerWithStats
> 	gemTimeZone = a GbxL8Delegate sess: 1 flags: 0 {16r1A11A01}
> 	gsClassOrganizer = nil
> 	isRemote = true
> 	isUnwindingAsyncAbort = false
> 	nestingLevel = 0
> 	notCachedToken = 'Not cached'
> 	parameters = 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> 	procBalancer = nil
> 	replicatorManager = a GemStone.Gbs.GbxReplicatorManager
> 	serverInterface = a GemStone.Gbs.GbxServerInterfaceWithStats
> 	serverMap = a GemStone.Gbs.GbxServerMap
> 	sessionDisplayString = 'Session 1 (remote) for ''Trade...0055!gs64stone'' @ ''gemstone'''
> 	sessionId = 1
> 	sessionProtect = a GemStone.Gbs.GbxSemaphoreWithStats
> 	specialConverter = a GemStone.Gbs.GbxSpecialConverter64Vw64
> 	stats = a GbxSessionStatResource:
> 	bytesSentByStoreTraversal: 213624
> 	bytesTraversed: 7671328
> 	changedObjNotifications: 0
> 	classesMapped: 1970
> 	dirtyPoolSize: 0
> 	freeOopsFetched: 2000
> 	gciCallsToGem: 754
> 	gciCallsToGemTime: 9550798
> 	gciErrors: 0
> 	lostOtRoots: 0
> 	nbEndResultNoProgress: 292
> 	nbEndResultProgressed: 0
> 	nbEndResultReady: 418
> 	objectsStoredByTraversal: 1461
> 	objectsTraversed: 126237
> 	serverMapSize: 128835
> 	sessionProtectInvocations: 153521
> 	sessionSignals: 0
> 	sigAborts: 0
> 	storeTraversals: 101
> 	traversalUnpackingTime: 0
> 	traverseCallTime: 0
> 	traverseCalls: 418
> 	asyncAbortStartAction = nil
> 	asyncAbortFinishAction = nil
> Arguments:
> 	aBlock = BlockClosure [] in GbxObjectStub>>faultToLevel:
> Context PC = 14
> 
> ----------------------------------------------------------------------
> GbxPointerStub(GbxObjectStub)>>faultToLevel:
> Receiver:
> 	a GbxPointerStub
> Arguments:
> 	levelOrNil = nil
> Temporaries:
> 	delegate = a GbxL8Delegate sess: 1 flags: 0 {16r1E80701}
> 	session = Session 1 (remote) for 'Trader' on '!@gemstone#netldi:40055!gs64stone' @ 'gemstone'
> Context PC = 35
> 
> ----------------------------------------------------------------------
> GbxPointerStub(GbxObjectStub)>>fault
> Receiver:
> 	a GbxPointerStub
> Context PC = 5
> 
> ----------------------------------------------------------------------
> GbxPointerStub(GbxObjectStub)>>=
> Receiver:
> 	a GbxPointerStub
> Arguments:
> 	anObject = 15 minutes
> Context PC = 16
> 



More information about the GemStone-Smalltalk mailing list