[Vm-dev] Problem with #garbageCollect and -memory parameter
Mariano Martinez Peck
marianopeck at gmail.com
Tue Nov 30 23:41:44 UTC 2010
On Wed, Dec 1, 2010 at 12:11 AM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:
> On Tue, Nov 30, 2010 at 5:14 PM, David T. Lewis <lewis at mail.msen.com>wrote:
>> 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
> Smalltalk garbageCollect 481957728
> Smalltalk primBytesLeft 5738200
> with -memory 1500m
> Smalltalk garbageCollect 482093452
> Smalltalk primBytesLeft 6444200
mmmmmmm if instead of sending -memory I modify Info.plist and I set
then I get
Smalltalk garbageCollect 1518058920
Smalltalk primBytesLeft 5898636
so maybe the mac vm is not taking into acount -memory but it does the file?
> 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
> can I check some parameter in Smalltalk vmParameterAt:
>> 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
>> > user gives permission after being given fair warning."
>> > self garbageCollectMost > self lowSpaceThreshold ifTrue: [^ true].
>> > "quick"
>> > self garbageCollect > self lowSpaceThreshold ifTrue: [^ true].
>> > 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
>> > 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
>> > 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
>> > how to do this).
>> > Now, in addition, I wonder if there may be other places broken because
>> > this....I am having some crashed and I don't know why :(
>> > Thanks in advance,
>> > Mariano
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Vm-dev