Hello, I am trying to use Magma for a little projecto of mine. I have apparently managed to create and store a few objects. But when I close the database and open it again I get the Primitive has failed exception with the details I am attaching. I am running on a 3.9 image under linux with the following VM version:
ramiro@alcmena:~$ squeak -version 3.8a-1 #1 Tue Mar 22 14:03:58 PST 2005 ccache Squeak3.8gamma of '24 November 2004' [latest update: #6548]
Has anyone come across this issue? Should I be using a different VM or Image?
Hi Ramiro, it looks like an invalid keySize for the MagmaCollection was specified, but if so then Magma should have caught it by validation..
It would be very easy to debug if you can please tell me what script I can use to reproduce the issue.
Also, please try it on 3.8. I haven't tried Magma on 3.9 yet, so it is not supported (yet).
MagmaCollections definitely work, I'm sure we can figure out what happened and how to fix..
Thanks, Chris
--- Ramiro Diaz Trepat ramirodt@gmail.com wrote:
Hello, I am trying to use Magma for a little projecto of mine. I have apparently managed to create and store a few objects. But when I close the database and open it again I get the Primitive has failed exception with the details I am attaching. I am running on a 3.9 image under linux with the following VM version:
ramiro@alcmena:~$ squeak -version 3.8a-1 #1 Tue Mar 22 14:03:58 PST 2005 ccache Squeak3.8gamma of '24 November 2004' [latest update: #6548]
Has anyone come across this issue? Should I be using a different VM or Image?
Error: a primitive has failed
22 October 2005 1:53:47 am
VM: unix - a
SmalltalkImage
Image: Squeak3.9alpha [latest update: #6693]
SecurityManager
state:
Restricted: false FileAccess: true SocketAccess: true Working Dir
/media/work/Squeak/3.9
Trusted Dir /media/work/Squeak/3.9/secure Untrusted
Dir /media/work/Squeak/3.9/My Squeak
ByteArray class(Object)>>error:
Receiver: ByteArray
Arguments and temporary variables: aString: 'a
primitive has failed'
Receiver's instance variables: superclass:
ArrayedCollection
methodDict: a MethodDictionary(#asByteArray->a
CompiledMethod (480) #asByteArra...etc...
format: 1026
instanceVariables: nil
organization: ('accessing' asWideString atAllPut:
byteAt: byteAt:put: byteSize ...etc...
subclasses: {CompiledMethod .
ExternalAddress . UUID}
name: #ByteArray classPool: a Dictionary()
sharedPools: nil
environment: nil category: nil
ByteArray
class(Object)>>primitiveFailed
Receiver: ByteArray Arguments and temporary
variables:
Receiver's instance variables: superclass:
ArrayedCollection
methodDict: a MethodDictionary(#asByteArray->a
CompiledMethod (480) #asByteArra...etc...
format: 1026
instanceVariables: nil
organization: ('accessing' asWideString atAllPut:
byteAt: byteAt:put: byteSize ...etc...
subclasses: {CompiledMethod .
ExternalAddress . UUID}
name: #ByteArray classPool: a Dictionary()
sharedPools: nil
environment: nil category: nil
ByteArray
class(Behavior)>>basicNew:
Receiver: ByteArray Arguments and temporary
variables:
sizeRequested: (1/4) Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a
MethodDictionary(#asByteArray->a CompiledMethod (480) #asByteArra...etc...
format: 1026
instanceVariables: nil organization: ('accessing'
asWideString atAllPut: byteAt: byteAt:put: byteSize ...etc...
subclasses:
{CompiledMethod . ExternalAddress . UUID}
name: #ByteArray classPool: a
Dictionary()
sharedPools: nil environment: nil category:
nil
ByteArray class(Behavior)>>new: Receiver: ByteArray Arguments and
temporary variables:
sizeRequested: (1/4) Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a
MethodDictionary(#asByteArray->a CompiledMethod (480) #asByteArra...etc...
format: 1026
instanceVariables: nil organization: ('accessing'
asWideString atAllPut: byteAt: byteAt:put: byteSize ...etc...
subclasses:
{CompiledMethod . ExternalAddress . UUID}
name: #ByteArray classPool: a
Dictionary()
sharedPools: nil environment: nil category: nil
---
The full stack ---
ByteArray class(Object)>>error: ByteArray
class(Object)>>primitiveFailed
ByteArray class(Behavior)>>basicNew: ByteArray
class(Behavior)>>new:
- - - - - - - - - - - - - - - - - - - - - - - - - - -
MaHashIndexRecord>>keySize:valueSize:numberOfSlots: MaHashIndexRecord
class>>keySize:valueSize:numberOfSlots:
MaHashIndex>>createRecord MaHashIndex>>initializeRecords MaHashIndex>>keySize:valueSize:hashRecordSize: MaHashIndex>>initializeFromHeader: MaHashIndex(MaLargeArrayOfRecords)>>readHeader MaHashIndex(MaLargeArrayOfRecords)>>open: MaHashIndex(MaMagnitudeIndex)>>open: MaHashIndex
class(MaLargeArrayOfRecords class)>>open:
MagmaCollectionManager>>openIndex: MagmaCollectionManager(MaLargeCollectionManager)>>ensureMemberIndexOpen MagmaCollectionManager(MaLargeCollectionManager)>>ensureOpen MagmaCollectionManager>>ensureOpen MaObjectRepository>>openLargeCollectionIfNecessary: MagmaRepositoryController>>openLargeCollection: []
in MagmaRepositoryController>>openLargeCollections {[:each | self openLargeCollection: each]}
Set>>do: MagmaRepositoryController>>openLargeCollections MagmaRepositoryController>>open MagmaRepositoryController>>open: MagmaRepositoryController
class>>open:
MagmaRepositoryController class>>openedOn: MagmaSession
class>>openLocal:
FinanceDB
class>>session
UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: []
in TextMorphEditor(ParagraphEditor)>>evaluateSelection {[rcvr class evaluatorClass new evaluate: self selectionAsStream in: ctxt...]}
BlockContext>>on:do: TextMorphEditor(ParagraphEditor)>>evaluateSelection TextMorphEditor(ParagraphEditor)>>doIt []
in TextMorphEditor(ParagraphEditor)>>doIt: {[self doIt]}
TextMorphEditor(Controller)>>terminateAndInitializeAround: ...etc...> 'From Squeak3.9alpha of 4 July 2005 [latest update: #6693] on 22 October 2005
at 1:54:53 am'!
!Behavior methodsFor: 'instance creation' stamp: 'sd
3/28/2003 15:06'!
basicNew: sizeRequested "Primitive. Answer an instance of
this class with the number
of indexable variables specified by the argument,
sizeRequested.
Fail if this class is not indexable or if the argument is not
a
positive Integer, or if there is not enough memory available. Essential.
See Object documentation whatIsAPrimitive."
<primitive: 71> self
isVariable ifFalse:
[self error: self printString, ' cannot have variable
sized instances'].
(sizeRequested isInteger and: [sizeRequested >= 0])
ifTrue:
["arg okay; space must be low." self environment signalLowSpace.
^ self basicNew: sizeRequested "retry if user proceeds"].
self
primitiveFailed! !
magma@lists.squeakfoundation.org