[Glass] Nested transactions and 'CorruptObj error', or: how to abort in GLASS?

Pieter Nagel pieter at nagel.co.za
Wed Mar 19 05:08:49 PDT 2014


Still no luck with nested transactions on 3.1.0.5:

---
[1] AbstractException >> _signalFromPrimitive: (envId 0)
	handleInCextensionBool: nil
	num: nil
	res: nil
	.t1: nil
	.t2: a InternalError occurred (error 2261), The object with object ID
aGsMethodLookupCache( 284640->aGsNativeCode) is corrupt. Reason: 'attempt
to commit a hidden object'
	receiver: a InternalError occurred (error 2261), The object with object
ID aGsMethodLookupCache( 284640->aGsNativeCode) is corrupt. Reason:
'attempt to commit a hidden object'
[2] System class >> _primitiveCommit: (envId 0)
	commitMode: 0
	receiver: System
[3] System class >> __commit: (envId 0)
	commitMode: 0
	receiver: System
[4] [] in  System class >> _localCommit: (envId 0)
	actualMode: 0
	self: System
	receiver: System
[5] ExecBlock >> onException:do: (envId 0)
	anException: Error
	handlerBlock: anExecBlock1
	receiver: System
[6] System class >> _localCommit: (envId 0)
	commitMode: 0
	commitResult: nil
	actualMode: 0
	self: System
	.t1: anExecBlock0
	.t2: Error
	.t3: anExecBlock1
	receiver: System
[7] TransactionBoundaryDefaultPolicy >> commit: (envId 0)
	commitMode: 0
	res: nil
	.t1: System
	.t2: 0
	receiver: aSessionMethodTransactionBoundaryPolicy
[8] System class >> _commit: (envId 0)
	commitMode: 0
	coordinator: aSessionMethodTransactionBoundaryPolicy
	.t1: aSessionMethodTransactionBoundaryPolicy
	.t2: 0
	receiver: System
[9] System class >> commitTransaction (envId 0)
	receiver: System
[10] OBGemStonePlatform class >> doAutoCommit (envId 0)
	result: nil
	.t1: System
	receiver: OBGemStonePlatform
[11] JadeServer >> evaluate:inContext: (envId 0)
	aString: 'WonkaTestRunner runDomainTests.
'
	anObject: nil
	result: true
	.t1: OBGemStonePlatform
	receiver: aJadeServer
[12] JadeServer >> printIt:in: (envId 0)
	aString: 'WonkaTestRunner runDomainTests.
'
	aContext: nil
	receiver: aJadeServer
[13] GsNMethod class >> _gsReturnToC (envId 0)
	receiver: nil
---

This happens as part of the auto-commit that happens right at the end of
"print it"'ing the code that runs our entire unit test, so it is hard to
point a finger at which one of the many tests called caused the initial
corruption (except to say this does not happen when not using nested
transaction).

I've seen the above error many times under 3.1.0.4 as well.




More information about the Glass mailing list