Re: [Sablevm-developer] Runaway memory usage
Brought to you by:
egagnon
From: Archie C. <ar...@de...> - 2002-12-13 22:30:03
|
Archie Cobbs wrote: > Note the absurd 'frame_size=178286532' value being passed to > _svmf_ensure_stack_capacity() (because of the first bug, it actually > tries to allocate that much memory, but nevermind that for a minute)... > This value results from a corrupted 'method' structure. It appears > that the 'method->frame_info' pointer is bogus: Further progress report on this... It appears that SableVM is trying to run the START_PREPARE_INVOKEVIRTUAL "bytecode" using a '_svmt_CONSTANT_Methodref_info' which describes an interface method instead of an instance method. The result is that the computed method_id is 616 which of course is supposed to be an interface method index but SableVM tries to use it as a virtual method index to the vtable, hence the 'corrupted method' and crash. The method being executed is soot.AbstractValueBox.setValue(). The interface method that this method is trying to invoke is soot.ValueBox.canContainValue(). So in summary, a concrete method (setValue()) in an abstract class (AbstractValueBox) that implements an interface (ValueBox) is trying to invoke an abstract interface method (canContainValue()) using the 'this' object. Hopefully this rings a bell.. ? I haven't been able to reproduce this with a simple example. -Archie __________________________________________________________________________ Archie Cobbs * Packet Design * http://www.packetdesign.com |