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 |
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. 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 |
On Tue, Nov 30, 2010 at 5:14 PM, David T. Lewis <[hidden email]> wrote:
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
|
Free forum by Nabble | Edit this page |