hogoww / Polyphemus

Visualisation of memory for Pharo images at the Virtual Machine level
GNU General Public License v3.0
15 stars 3 forks source link

CI Status

Polyphemus

Polyphemus is a tool that gives a higher level representation of the object ordinary pointers (OOP) for the Pharo VM. It also proposes a visualization of the memory. Polyphemus can be used on a memory while developing the VM inside the simulator or to explore real images.

Usage

The simplest way to use is to execute the following:

The path should be provided as a string.
A small image is provided by default and its path is accessible through the message send: PharoImageAccessor pathToCandle64Bit..
You can also download the latests minimal & regular Pharo images using the class PharoImageAccessor..

UI Details

The Memory Inspector has 4 tabs: A scripter, a class and methods browser, and the new and the old space objects visualisation.

Screenshot 2022-08-14 at 14 57 43

Screenshot 2022-08-14 at 14 59 49

Screenshot 2022-08-14 at 15 00 13

Note: An image is only the old space.
Therefore, loading an image into Polyphemus will display an empty new space !

Inspector

Clicking on a box opens an inspector on a reification of the oop (based on carolina's inspector).
We do as many guess as possible to provide the user with as many high level information as possible.
Particularly, string interpretation.
Moreover, the object in the inspector can be navigated just like Pharo objects.

Screenshot 2022-08-14 at 14 56 57

Concept

The main idea of Polyphemus is to provide a higher level vision of VMs OOPs.
However, this is meant to be a basis for Pharo tools.
Particularly we are investigating how to investigate memory corruptions and how to recover dead images.
We were able to save a dead image, see the other Ressources section.

Other Ressources

Video submited to the Esug'22 Innovation Technology Awards.
Report of how we used Polyphemus to resurrect a dead image.
Paper accepted at VMIL'22 (preprint)