oxidecomputer / oxidecomputer/propolis

Just after boot a focal image panics propolis

Open
#333 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
270
Forks
42
Avg merge
4d 5h
Merged PRs (30d)
6

Description

Running latest Omicron (on sn21) I encountered a panic in propolis-server after a first boot of a newly created Ubuntu Focal instance.

The tail of the propolis-server log looks like this:

Dec 28 03:06:02.914 INFO piix3pm ignored cfg read, register: SmbusBase, offset: 0, dev: chipset
Dec 28 03:06:02.914 INFO piix3pm ignored cfg read, register: DevResA, offset: 0, dev: chipset
Dec 28 03:06:02.915 INFO piix3pm ignored cfg read, register: DevResB, offset: 0, dev: chipset
Dec 28 03:06:02.915 INFO piix3pm ignored cfg read, register: DevResC, offset: 0, dev: chipset
Dec 28 03:06:02.915 INFO piix3pm ignored cfg read, register: DevResI, offset: 0, dev: chipset
Dec 28 03:06:02.915 INFO piix3pm ignored cfg read, register: DevResJ, offset: 0, dev: chipset
Dec 28 03:06:03.125 INFO rdmsr, msr: 3221225705, vcpu: 0, component: vcpu_tasks
Dec 28 03:06:43.620 WARN [1] flow control start 
Dec 28 03:06:44.621 WARN [1] flow control sending more work
Dec 28 03:06:44.621 WARN [1] flow control end 
thread 'vcpu-2' panicked at 'vCPU 2: Unhandled VM exit: InstEmul(InstEmul { inst_data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], len: 0 })', bin/propolis-server/src/lib/vm/mod.rs:450:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[ Dec 27 19:06:46 Stopping because all processes in service exited. ]
[ Dec 27 19:06:46 Executing stop method (:kill). ]

The stack of the thread that panic'd is:

-------------- thread# 140 / lwp# 140 [vcpu-2] ---------------                              
 fffff5ffef15863a _lwp_kill () + a                                                          
 fffff5ffef0ec58e raise (6) + 1e                                                            
 fffff5ffef0c5ff8 abort () + 58                                                             
 0000000001d2e7c9 panic_abort::__rust_start_panic::abort::hc1d5f3609ef6507d () + 9          
 0000000001d2e7b9 __rust_start_panic () + 9                                                 
 0000000001d19fac rust_panic () + 1c                                                        
 0000000001d19e34 std::panicking::rust_panic_with_hook::h3e4550c354b0930e () + 2c4          
 0000000001d19b56 std::panicking::begin_panic_handler::{{closure}}::he4c4fc5cc7d7a749 () + c6                                                                                           
 0000000001d16ef0 std::sys_common::backtrace::__rust_end_short_backtrace::hf95a242dcdd81a73 () + 20                                                                                     
 0000000001d19871 rust_begin_unwind () + 71                                                 
 0000000001d71a83 core::panicking::panic_fmt::h8e01a776a1dd4222 () + 33                     
 0000000000f12cf8 propolis_server::vm::SharedVmState::unhandled_vm_exit::hc565154474be8e59 () + 68                                                                                      
 00000000010532ea propolis_server::vcpu_tasks::VcpuTasks::vcpu_loop::h3e160f3429fdb39d () + 9ba                                                                                         
 000000000102a9b7 std::sys_common::backtrace::__rust_begin_short_backtrace::h00a3785c156ed8ed () + 57                                                                                   
 0000000000f99f8d core::ops::function::FnOnce::call_once{{vtable.shim}}::h1d68dceaad48552a () + bd                                                                                      
 0000000001d22d97 std::sys::unix::thread::Thread::new::thread_start::he5f444ef683dcd93 () + 27                                                                                          
 fffff5ffef15121c _thrp_setup (fffff5ffee734a40) + 6c
 fffff5ffef151530 _lwp_start ()

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the first boot of a newly created Ubuntu Focal instance and inspect the panic at bin/propolis-server/src/lib/vm/mod.rs:450, using the vcpu_tasks::VcpuTasks::vcpu_loop stack as context. Trace the unhandled InstEmul VM exit and verify that the instance completes boot without propolis-server panicking.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.