1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
VirtIO drivers don't work on Windows: "GLib: Too many handles to wait for!" crash
I ran SerenityOS <https://github.com/SerenityOS/serenity> out of WSL2 with native Windows QEMU. The system runs fine on the Linux QEMU (with Windows X-Server). However, with Windows QEMU I get a hard crash after the following output:
```
[#0 colonel(0:0)]: Scheduler[0]: idle loop running
[init_stage2(2:2)]: PCI [0000:00:00:00] PCI::ID [8086:1237]
[init_stage2(2:2)]: PCI [0000:00:01:00] PCI::ID [8086:7000]
[init_stage2(2:2)]: PCI [0000:00:01:01] PCI::ID [8086:7010]
[init_stage2(2:2)]: PCI [0000:00:01:02] PCI::ID [8086:7020]
[init_stage2(2:2)]: PCI [0000:00:01:03] PCI::ID [8086:7113]
[init_stage2(2:2)]: PCI [0000:00:02:00] PCI::ID [1234:1111]
[init_stage2(2:2)]: PCI [0000:00:03:00] PCI::ID [8086:2922]
[init_stage2(2:2)]: PCI [0000:00:04:00] PCI::ID [1af4:1003]
[init_stage2(2:2)]: PCI [0000:00:05:00] PCI::ID [1af4:1005]
[init_stage2(2:2)]: PCI [0000:00:06:00] PCI::ID [8086:100e]
[#0 init_stage2(2:2)]: BXVGA: framebuffer @ P0xf8000000
[#0 init_stage2(2:2)]: BXVGADevice resolution set to 1024x768 (pitch=4096)
[init_stage2(2:2)]: UHCI: Controller found PCI::ID [8086:7020] @ PCI [0000:00:01:02]
[init_stage2(2:2)]: UHCI: I/O base IO c080
[init_stage2(2:2)]: UHCI: Interrupt line: 11
[#0 init_stage2(2:2)]: UHCI: Allocated framelist at physical address P0x00e40000
[#0 init_stage2(2:2)]: UHCI: Framelist is at virtual address V0xc115d000
[#0 init_stage2(2:2)]: UHCI: QH(0xc115f000) @ 14946304: link_ptr=14946338, element_link_ptr=1
[#0 init_stage2(2:2)]: UHCI: QH(0xc115f020) @ 14946336: link_ptr=14946370, element_link_ptr=1
[#0 init_stage2(2:2)]: UHCI: QH(0xc115f040) @ 14946368: link_ptr=14946402, element_link_ptr=1
[#0 init_stage2(2:2)]: UHCI: QH(0xc115f060) @ 14946400: link_ptr=14946434, element_link_ptr=1
[#0 init_stage2(2:2)]: UHCI: QH(0xc115f080) @ 14946432: link_ptr=14958593, element_link_ptr=1
[#0 init_stage2(2:2)]: UHCI: Reset completed
[#0 init_stage2(2:2)]: UHCI: Started
[#0 init_stage2(2:2)]: DMIExpose: SMBIOS 32bit Entry point @ P0x000f5870
[#0 init_stage2(2:2)]: DMIExpose: Data table @ P0x000f5890
[#0 init_stage2(2:2)]: VirtIOConsole: Found @ PCI [0000:00:04:00]
[#0 init_stage2(2:2)]: Trying to unregister unused handler (?)
[#0 init_stage2(2:2)]: VirtIOConsole: Multi port is not yet supported!
[#0 init_stage2(2:2)]: VirtIOConsole: cols: 0, rows: 0, max nr ports 0
qemu-system-i386.exe: warning: GLib: Too many handles to wait for!
```
The lines starting with [ are SerenityOS output; QEMU warns "GLib: Too many handles to wait for!" and crashes right after (can't even Ctrl-C in the WSL command line, force-close in Windows necessary). A window is still spawned but as the OS already switched out of text mode, just a black screen is visible as QEMU crashes.
I first thought this to be an issue with SerenityOS and reported it over there: <https://github.com/SerenityOS/serenity/issues/6422>. The kernel devs pointed out that this seems to be a VirtIO driver/device issue on the Windows build of QEMU, because the Serenity kernel tries to initialize VirtIO devices which apparently crashes QEMU. There will be mitigations from the SerenityOS side (by allowing to disable VirtIO on boot) but it would of course be great if QEMU handled this properly.
Version info: Both QEMU 6.0.0-rc3 and 5.2.0 exhibit this issue. Windows release is 20H2, WSL2 is running Debian 10.9. SerenityOS has no proper version but it was reproduced on the most current commits as of 18/04/2021.
Did you build your own Windows binary based on the official sources? Or did you use a precompiled binary? If yes, which one?
Please describe the exact steps to reproduce the issue.
I used the pre-built binaries with the versions described above. I did not change any install options so this can be reproduced after using the official install binaries for each version.
Le 19/04/2021 à 12:39, Stefan Weil a écrit :
> I can confirm the issue also with latest official QEMU sources.
>
> Related issue URLs:
>
> https://github.com/tesseract-ocr/tesseract/issues/2838
>
> https://bugs.launchpad.net/qemu/+bug/1924912
>
> Instructions and files required to reproduce the issue:
>
> https://qemu.weilnetz.de/test/bugs/1924912/
>
> Michael, Laurent, maybe you have an idea how to narrow down this issue?
Could it be related to the number of file descriptors that can differ between linux an windows?
We have a series of patches that sets the number of queues to the number of vCPU:
a4eef0711b2c vhost-user-blk-pci: default num_queues to -smp N
9445e1e15e66 virtio-blk-pci: default num_queues to -smp N
6a558822849f virtio-scsi-pci: default num_queues to -smp N
4e5163bd8444 virtio-scsi: introduce a constant for fixed virtqueues
1436f32a84c3 virtio-pci: add virtio_pci_optimal_num_queues() helper
And I think it can have inpact on the number of open file descriptors.
You can try by specifiying "num_queues=1" with the virtio interfaces on the QEMU command line.
(ot choose a machine type earlier than 5.2)
Thanks,
Laurent
The QEMU project is currently moving its bug tracking to another system.
For this we need to know which bugs are still valid and which could be
closed already. Thus we are setting the bug state to "Incomplete" now.
If the bug has already been fixed in the latest upstream version of QEMU,
then please close this ticket as "Fix released".
If it is not fixed yet and you think that this bug report here is still
valid, then you have two options:
1) If you already have an account on gitlab.com, please open a new ticket
for this problem in our new tracker here:
https://gitlab.com/qemu-project/qemu/-/issues
and then close this ticket here on Launchpad (or let it expire auto-
matically after 60 days). Please mention the URL of this bug ticket on
Launchpad in the new ticket on GitLab.
2) If you don't have an account on gitlab.com and don't intend to get
one, but still would like to keep this ticket opened, then please switch
the state back to "New" or "Confirmed" within the next 60 days (other-
wise it will get closed as "Expired"). We will then eventually migrate
the ticket automatically to the new system (but you won't be the reporter
of the bug in the new system and thus you won't get notified on changes
anymore).
Thank you and sorry for the inconvenience.
Moved to https://gitlab.com/qemu-project/qemu/-/issues/332
So it's a virtio console issue on a windows host.
[#0 init_stage2(2:2)]: VirtIOConsole: Found @ PCI [0000:00:04:00]
[#0 init_stage2(2:2)]: Trying to unregister unused handler (?)
[#0 init_stage2(2:2)]: VirtIOConsole: Multi port is not yet supported!
[#0 init_stage2(2:2)]: VirtIOConsole: cols: 0, rows: 0, max nr ports 0
qemu-system-i386.exe: warning: GLib: Too many handles to wait for!
Laurent?
On Mon, Apr 19, 2021 at 04:30:23PM +0200, Laurent Vivier wrote:
> Le 19/04/2021 à 12:39, Stefan Weil a écrit :
> > I can confirm the issue also with latest official QEMU sources.
> >
> > Related issue URLs:
> >
> > https://github.com/tesseract-ocr/tesseract/issues/2838
> >
> > https://bugs.launchpad.net/qemu/+bug/1924912
> >
> > Instructions and files required to reproduce the issue:
> >
> > https://qemu.weilnetz.de/test/bugs/1924912/
> >
> > Michael, Laurent, maybe you have an idea how to narrow down this issue?
>
> Could it be related to the number of file descriptors that can differ between linux an windows?
>
> We have a series of patches that sets the number of queues to the number of vCPU:
>
> a4eef0711b2c vhost-user-blk-pci: default num_queues to -smp N
> 9445e1e15e66 virtio-blk-pci: default num_queues to -smp N
> 6a558822849f virtio-scsi-pci: default num_queues to -smp N
> 4e5163bd8444 virtio-scsi: introduce a constant for fixed virtqueues
> 1436f32a84c3 virtio-pci: add virtio_pci_optimal_num_queues() helper
>
> And I think it can have inpact on the number of open file descriptors.
>
> You can try by specifiying "num_queues=1" with the virtio interfaces on the QEMU command line.
> (ot choose a machine type earlier than 5.2)
>
> Thanks,
> Laurent
Le 26/05/2021 à 11:47, mst a écrit :
> So it's a virtio console issue on a windows host.
>
> [#0 init_stage2(2:2)]: VirtIOConsole: Found @ PCI [0000:00:04:00]
> [#0 init_stage2(2:2)]: Trying to unregister unused handler (?)
> [#0 init_stage2(2:2)]: VirtIOConsole: Multi port is not yet supported!
> [#0 init_stage2(2:2)]: VirtIOConsole: cols: 0, rows: 0, max nr ports 0
> qemu-system-i386.exe: warning: GLib: Too many handles to wait for!
>
> Laurent?
I will answer on gitlab issue:
https://gitlab.com/qemu-project/qemu/-/issues/332
|