Better to replace symbol #halt with #yourself in the method litarray.
Doing it uncoditionally in all compiled methods should not hurt.
Easier and safer :-)

Jan

On 09/11/12 14:31, Henrik Sperre Johansen wrote:
On 09.11.2012 13:36, Sebastian Nozzi wrote:
2012/11/9 Igor Stasenko <[email protected]>:
My recipe is:
- simply find an offending compiled method
- replace its first bytecode to "returnself"
How do you do this?

One could potentially build a tool to do it :)
(with the caveat that one would need to be intimate with the
image/object format)

- Open a "dead" image file.
- Find offsets for start of object space and symbol table (in the image
header?)
- Search for startUp/startUp:/halt in Symbol table, and record their
object header adresses
- Subtract the object space start start from these, and you'd have the
oop's of these Symbols.
- Scan the image for startUp(:) oops, check if it's the selector of a
CompiledMethod instance, and that halt is one of it's literals.
- If so, replace the first byte in the CM's bytecodes with that of
returnself.

If you want to do so manually, better get your Neo-goggles on, or be
Igor :P

Cheers,
Henry



Reply via email to