On Tue, Nov 30, 2010 at 5:14 PM, David T. Lewis <[email protected]> wrote:
> > Hi, > > I'm away and cannot check this right now, but if you look in the > SqS/VMMaker archive there there are a number of recent updates that > may address this problem. See the Montecello update comments for > VMMaker-dtl.188, VMMaker-dtl.199, and VMMaker-dtl.200 for summaries. > These updates would not be in any of the released VMs at this point, > but I have a hunch that they will take care of this problem. > Hi Dave. Ok...after a couple of hours I could compile a new VM for MacOS with VMMaker 205 and integrating all my changes :) So....this was something I have to do since several months already hehhehe Now, as you guessed, something was related to that. Now, these are the results: normal: Smalltalk garbageCollect 481957728 Smalltalk primBytesLeft 5738200 with -memory 1500m Smalltalk garbageCollect 482093452 Smalltalk primBytesLeft 6444200 Now, at least it is not negative. But I wonder....shouldn't I have more bytes left when I send 1500m ? how can I be sure that the VM is actually tacking into account this parameter? can I check some parameter in Smalltalk vmParameterAt: ? thanks! mariano > Dave > > > On Tue, Nov 30, 2010 at 02:43:50PM +0100, Mariano Martinez Peck wrote: > > > > Hi folks. I am using the standard SqueakVM 4.2.5beta1U. > > If I run normaly the VM with a normal Pharo image and I print Smalltalk > > garbageCollect -> I get something like 492130460 > > > > Now...if I run the vm with the parameter -memory 1500m and I then print > > Smalltalk garbageCollect -> I get a NEGATIVE number like: -619402660 > > > > I guess there is a problem in somewhere like ObjectMemory >> bytesLeft: > > but I don't know... > > > > Anyway, the problem in my case is in SmalltalkImage: > > > > okayToProceedEvenIfSpaceIsLow > > "Return true if either there is enough memory to do so safely or if > the > > user gives permission after being given fair warning." > > > > self garbageCollectMost > self lowSpaceThreshold ifTrue: [^ true]. > > "quick" > > self garbageCollect > self lowSpaceThreshold ifTrue: [^ true]. "work > > harder" > > > > ^ self confirm: > > 'WARNING: There is not enough space to start the low space watcher. > > If you proceed, you will not be warned again, and the system may > > run out of memory and crash. If you do proceed, you can start the > > low space notifier when more space becomes available simply by > > opening and then closing a debugger (e.g., by hitting Cmd-period.) > > Do you want to proceed?' > > > > > > Since both of the first answers false because, of course > garbageCollectMost > > and garbageCollect are negative.... > > then I have that poup all the time. > > > > To fix this I have to posibilities: > > > > 1) Just patch this particular method to: > > > > self garbageCollectMost. > > self primBytesLeft > self lowSpaceThreshold ifTrue: [^ true]. "quick" > > self garbageCollect > > self primBytesLeft > self lowSpaceThreshold ifTrue: [^ true]. "work > harder" > > > > Notice that primBytesLeft is answering correct. Wait..I don't know if > > correct, but at least possitive: 5691396 > > I think this is possitive because the primitive is not receiving a > > parameter, and thus, Interpreter >> primitiveBytesLeft > > evaluates the first part of the method, which just does self sizeOfFree: > > freeBlock , and not the second part where it does self bytesLeft: aBool. > > > > 2) understand why it is negative and fix it from the VM side (I have no > idea > > how to do this). > > > > Now, in addition, I wonder if there may be other places broken because of > > this....I am having some crashed and I don't know why :( > > > > Thanks in advance, > > > > Mariano > >
