Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Challenges in Debugging Bootstraps of Reflective Kernels

Talk from IWST at ESUG19, Cologne, Germany

  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Challenges in Debugging Bootstraps of Reflective Kernels

  1. 1. Challenges in Debugging Bootstraps of Reflective Kernels Carolina Hernández Phillips INRIA Lille Nord Europe IMT Lille Douai Noury Bouraqadi IMT Lille Douai Luc Fabresse IMT Lille Douai Stéphane Ducasse INRIA Lille Nord Europe Guille Polito Univ. Lille, CNRS, CRIStAL Pablo Tesone Pharo Consortium 1
  2. 2. Why generating custom application runtimes for IoT? Small Hardware requires software Limited processing capabilities, storage, battery !2
  3. 3. Existing approaches: Generating lightweight implementations of Languages from scratch Implement from scratch: VM, base libraries, compiler Implies complex low level implementation Requires high expertise to develop! !3
  4. 4. Our high level approach: Bootstrapping reflective kernels • Bootstrapping is to generate a system using a previous version of the system that is being generated • Therefore we can use the high level abstractions and the reflective capabilities of both systems during the bootstrap • The result is a small Kernel (an image in the case of Pharo) which can be executed by the same VM that executes its previous version !4
  5. 5. Demo Let’s Bootstrap PharoCandle (a Pharo micro kernel) !5
  6. 6. Virtual Machine Host SystemLanguage Definition 1. GENERATE 2.LOAD 3.EXECUTE Bootstrap Kernel App entry point !6
  7. 7. Defects and Failures !7
  8. 8. Defect: error in Language Definition Failure: incorrect result during the Bootstrap Virtual Machine Host SystemLanguage Definition Kernel 1. GENERATE 2.LOAD 3.EXECUTE Defects & Failures Kernel App entry point !8
  9. 9. Structural Defect Defect: error in Language Definition Defects Classification Language Definition Structural Definitions of Classes Methods Definitions Class PCPoint superclass : PCObject, instVars : { ‘x’, ’y’ }, type : variable PCPoint >> + arg { ^ (x + arg x) @ (y + arg y) } PCPoint >> crossProduct: aPoint { ^ x * aPoint y - (y * aPoint x) } … Semantic Defect fixed x !9
  10. 10. Defect: error in Language Definition Semantic Defects are Dangerous Language Definition Structural Definitions of Classes Methods Definitions Host System Kernel 1. GENERATE Reflective Ops PCClassBuilder >> installMethod: aCompiledMethod inClass: aClass { aClass methodDictionary add: aCompiledMethod } Modify !10 Semantic Defects in reflective methods modify the structural definitions in the Kernel
  11. 11. The why of defects !11
  12. 12. Structural Defect Defect: error in Language Definition Defects Language Definition Structural Definitions of Classes Methods Definitions Class PCPoint superclass : PCObject, instVars : { ‘x’, ’y’ }, type : variable PCPoint >> + arg { ^ (x + arg x) @ (y + arg y) } PCPoint >> crossProduct: aPoint { ^ x * aPoint y - (y * aPoint x) } … Semantic Defect fixed x !12
  13. 13. • Virtual Machine requirements • Application requirements Kernel The why of Defects Virtual Machine 2.LOAD Kernel PCMainApplication >> entryPoint { PCMyClass doSomething } Class PCArray superclass : PCObject, instVars : { }, Type : variable Virtual Machine 3.EXECUTE Smalltalk stack dump: 0xbffc8fd0 M >species 0x6e4e350: a(n) bad class 0xbffc7c0c M >copyReplaceFrom:to:with: 0x6e4e350: a(n) bad class 0xbffc7c30 M >, 0x6e4e350: a(n) bad class 0xbffc7c5c I >doesNotUnderstand: activeProcess 0x6e2f7c0: a(n) bad class 0xbffc7c88 I >doesNotUnderstand: activeProcess 0x6e2f7c0: a(n) bad class Segmentation Fault X X !13
  14. 14. Why is it hard to find the defects back? • We are debugging the VM • We lose great part of the abstractions of the generated language !14
  15. 15. Taxonomy of Errors and proposed Solutions !15
  16. 16. Taxonomy of Errors and Solutions Failure Stage Generation Loading Execution Defect Type Structural Semantic !16
  17. 17. Taxonomy of Errors and Solutions Failure Stage Generation Loading Execution Defect Type Structural VM requirement VM requirement VM requirement Semantic VM requirement Application requirement Static Tests on Language Definition + Base Language Definition !17
  18. 18. Kernel Virtual Machine Host System 1. GENERATE 2.LOAD 3.EXECUTE ! App entry point Methods Definitions Reflective Ops Structural Definitions of Classes Static Tests on Language Definition Language Definition Extensible Base Language Definition !18 (They reify the VM requirements)
  19. 19. Taxonomy of Errors and Solutions Failure Stage Generation Loading Execution Defect Type Structural VM requirement VM requirement VM requirement Semantic VM requirement Application requirement Static Tests on Language Definition + Base Language Definition Static Tests on Kernel + Hybrid Debugger !19
  20. 20. Structural Definitions of Classes Virtual Machine Language Definition 2.LOAD 3.EXECUTE Kernel App entry point Methods Definitions Kernel 1. GENERATE Reflective Ops + Static Tests on Language Kernel Hybrid Debugger Host System !20 3 Execution levels: - Language definition code - Pharo code - VM code 2 new Debugging Operations - Step Down - Step Up
  21. 21. Taxonomy of Errors and Solutions Failure Stage Generation Loading Execution Defect Type Structural VM requirement VM requirement VM requirement Semantic VM requirement Application requirement Static Tests on Kernel + Hybrid Debugger Simulated Execution Static Tests on Language Definition + Base Language Definition !21
  22. 22. Host System Structural Definitions of Classes Virtual Machine 1. GENERATE 2.LOAD 3.EXECUTE Kernel App entry point Reflective Ops Methods Definitions Kernel Execution Simulator AST interpreter + VM simulator App entry point Language Definition Lookup R/W objects !22
  23. 23. Taxonomy of Errors and Solutions Failure Stage Generation Loading Execution Defect Type Structural VM requirement VM requirement VM requirement Semantic VM requirement Application requirement Static Tests on Kernel + Hybrid Debugger Simulated Execution Static Tests on Language Definition + Base Language Definition All these solutions can be used to debug the current Pharo bootstrap process!! !23
  24. 24. Research Directions • Define the Pharo VM requirements, and model them for future modifications in future VM implementations • Maximise the flexibility of the extensible base language definition, to maximise the range of languages that we can define from it • Explore what is a good design for the hybrid debugger, so it contains the correct abstractions for debugging the bootstrap process • Explore the limitations for the simulated execution environment • Explore a way to debug failures hard to reproduce and which occur in production environment • Shrinking the VM by removing unused plugins, which will be determined by dynamically analysing the simulated execution and its interaction with the VM simulator !24
  25. 25. Conclusions • Analysis of Pharo Bootstrap process • Taxonomy of Defects and Failures • Proposed Solutions for each kind of error carolina.hernandez-phillips@inria.fr !25 Carolina Hernández Phillips

    Soyez le premier à commenter

    Identifiez-vous pour voir les commentaires

Talk from IWST at ESUG19, Cologne, Germany

Vues

Nombre de vues

402

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

6

Actions

Téléchargements

2

Partages

0

Commentaires

0

Mentions J'aime

0

×