hyperlight-dev / hyperlight-dev/hyperlight

Make it possible to kill guest execution when running a host function.

Aperta
#192 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
lifecycle/confirmed
Lingua principale
Rust
Stelle
4.7k
Fork
208
Merge medio
1g 7h
PR unite (30g)
48

Descrizione

Currently, it is not possible to interrupt or cancel execution if the guest is calling a host function. This means that, if the host function hangs, then the call will never return or get cancelled. This gets surfaced, like so:

https://github.com/hyperlight-dev/hyperlight/blob/b9c67fb7450cfebbd47918b979a97cfa447c43be/src/hyperlight_host/src/func/guest_dispatch.rs#L476

**One possible solution**

When running with the seccomp feature on, host functions are wrapped in their own thread like so:

https://github.com/hyperlight-dev/hyperlight/blob/b9c67fb7450cfebbd47918b979a97cfa447c43be/src/hyperlight_host/src/sandbox/host_funcs.rs#L208-L228

You could leverage these threads to cancel execution in the same way we cancel execution in the guest:

https://github.com/hyperlight-dev/hyperlight/blob/b9c67fb7450cfebbd47918b979a97cfa447c43be/src/hyperlight_host/src/hypervisor/hypervisor_handler.rs#L729-L762

Though, this would mean always wrapping host function calls with an extra thread and that might be naive in terms of perf.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Leggi src/hyperlight_host/src/func/guest_dispatch.rs intorno alla riga 476 per capire come una chiamata a una funzione host diventa non interrompibile. Confronta quindi il threading delle funzioni host con seccomp in src/hyperlight_host/src/sandbox/host_funcs.rs intorno alle righe 208-228 con la cancellazione del guest in src/hyperlight_host/src/hypervisor/hypervisor_handler.rs intorno alle righe 729-762. Il lavoro è completato quando una funzione host bloccata può essere cancellata senza lasciare bloccata l’esecuzione del guest e si è compreso il costo in termini di prestazioni di qualsiasi threading aggiunto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
rust
Ambito
infrastructure, operating-systems
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.