
18.480 SystemServer(6:6): Creating /tmp/coredump directory
18.493 SystemServer(6:6): Read system_mode: graphical
18.522 SystemServer(6:6): System in graphical mode
19.082 SystemServer(6:6): Activating 21 services...
21.287 SystemServer(6:6): Service KeyboardPreferenceLoader has exited with exit code 0
21.864 DHCPClient(16:16): We were offered 10.0.2.15 for 2152792320
21.911 DHCPClient(16:16): Leasing the IP 10.0.2.15 for adapter ep0s8
23.069 LookupServer(18:18): Using network config file at /etc/LookupServer.ini
23.446 [#0 keymap(20:20)]: New Character map 'en-us' passed in by client.
23.535 AudioServer(19:19): Started thread "AudioServer[mixer]", tid = 21
24.148 [#0 SyncTask(3:3)]: Ext2FS: Flushed 5 blocks to disk
24.484 SpiceAgent(14:14): Exiting with runtime error: unveil: No such file or directory (errno=2)
24.755 SystemServer(6:6): Service SpiceAgent has exited with exit code 256
25.415 WindowServer(17:17): update_virtual_rect for screen #0: [0,0 1024x768]
25.510 [#0 WindowServer(17:17)]: BochsGraphicsAdapter: resolution set to 1024x768
25.510 [#0 WindowServer(17:17)]: Framebuffer Console: taking 3145728 bytes
25.839 WindowServer(17:17): update_virtual_rect for screen #0: [0,0 1024x768]
26.059 WindowServer(17:17): update_virtual_rect for screen #0: [0,0 1024x768]
30.748 WindowServer(17:17): Entering WindowServer main loop
32.388 LoginServer(22:22): login with sid=22
32.429 SystemServer(22:22): Activating 9 services...
35.190 ResourceGraph.Applet(31:31): Create applet: 0 with spec 'CPUGraph,#00bb00'
38.145 utmpupdate(33:33): Updating utmp from UID=100 GID=100 EGID=5 PID=32
38.900 Audio.Applet(27:27): Started thread "", tid = 35
[AudioServer(19:21)]: ASSERTION FAILED: m_dma_running
[AudioServer(19:21)]: ../../Kernel/Devices/Audio/AC97.cpp:277 in void Kernel::AC97::AC97Channel::handle_dma_stopped()
[AudioServer(19:21)]: KERNEL PANIC! :^(
[AudioServer(19:21)]: Aborted
[AudioServer(19:21)]: at ../../Kernel/Arch/x86/common/CPU.cpp:35 in void abort()
[AudioServer(19:21)]: Kernel + 0x00cc8e71 Kernel::__panic(char const*, unsigned int, char const*) +0xf1
[AudioServer(19:21)]: Kernel + 0x0106df79 abort.localalias +0x245
[AudioServer(19:21)]: Kernel + 0x0106dd34 abort.localalias +0x0
[AudioServer(19:21)]: Kernel + 0x00506a8f Kernel::AC97::handle_irq(Kernel::RegisterState const&) +0x40f
[AudioServer(19:21)]: Kernel + 0x00a69766 Kernel::SharedIRQHandler::handle_interrupt(Kernel::RegisterState const&) [clone .localalias] +0x1e
6
[AudioServer(19:21)]: Kernel + 0x0107fc48 handle_interrupt +0x328
[AudioServer(19:21)]: Kernel + 0x0106ae3b interrupt_common_asm_entry +0x2b
[AudioServer(19:21)]: Kernel + 0x0050c356 Kernel::AC97::write(unsigned int, Kernel::UserOrKernelBuffer const&, unsigned int) [clone .localal
ias] +0x156
[AudioServer(19:21)]: Kernel + 0x00511f12 Kernel::AudioChannel::write(Kernel::OpenFileDescription&, unsigned long long, Kernel::UserOrKernel
Buffer const&, unsigned int) [clone .localalias] +0x3c2
[AudioServer(19:21)]: Kernel + 0x00927869 Kernel::OpenFileDescription::write(Kernel::UserOrKernelBuffer const&, unsigned int) +0x2f9
[AudioServer(19:21)]: Kernel + 0x00f43d8b Kernel::Process::do_write(Kernel::OpenFileDescription&, Kernel::UserOrKernelBuffer const&, unsigne
d int) [clone .localalias] +0x81b
[AudioServer(19:21)]: Kernel + 0x00f44c1f Kernel::Process::sys$write(int, AK::Userspace<unsigned char const*>, unsigned int) +0x85f
[AudioServer(19:21)]: Kernel + 0x00da3673 syscall_handler +0xea3
[AudioServer(19:21)]: Kernel + 0x00da27c1 syscall_asm_entry +0x31
dsound: warning: Voice is not playing
The
VERIFY(m_dma_running)
is there to make sure we only get an interrupt when the DMA engine is running. However, maybe there is a situation (bug?) where Qemu incorrectly sends an interrupt just stating the facts, i.e. the DMA engine is not running. If that is a plausible scenario, we should maybe not trip in this code:https://github.com/SerenityOS/serenity/blob/c27a5012ad0d64f93400d9cd244ab31a12029d05/Kernel/Devices/Audio/AC97.cpp#L276-L278
But instead, we could just
dbgln
+ setm_dma_running
tofalse
if it wastrue
before.