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
|
other: 0.830
permissions: 0.769
device: 0.752
semantic: 0.733
debug: 0.730
PID: 0.724
network: 0.683
graphic: 0.678
boot: 0.656
performance: 0.647
KVM: 0.631
socket: 0.622
vnc: 0.621
files: 0.619
QEMU 3.1 makes libxslt to crash on ppc64
Host: clean Ubuntu Disco with QEMU 3.1
Guest: Alpine Linux edge with xmlto
Steps to set up guest:
curl -O http://dl-cdn.alpinelinux.org/alpine/edge/releases/ppc64le/netboot/vmlinuz-vanilla
curl -O http://dl-cdn.alpinelinux.org/alpine/edge/releases/ppc64le/netboot/initramfs-vanilla
qemu-system-ppc64 -m 1G -kernel vmlinuz-vanilla -initrd initramfs-vanilla -append "console=hvc0 ip=dhcp alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main/ modloop=http://dl-cdn.alpinelinux.org/alpine/edge/releases/ppc64le/netboot/modloop-vanilla" -device virtio-rng-pci -nographic
This brings up an VM with an in-memory Alpine Linux.
Steps to reproduce:
Login as root and execute the following commands.
apk add xmlto
ntpd -nqp time.google.com // For TLS OCSP
wget https://ddosolitary.org/manpage-base.xsl
wget https://ddosolitary.org/shadowsocks-libev.xml
xmlto -m manpage-base.xsl man shadowsocks-libev.xml
The downloaded files are from this project: https://github.com/shadowsocks/shadowsocks-libev The former is directly taken from the "doc" directory and the latter is an intermediate build output generated by asciidoc from doc/shadowsocks-libev.asciidoc
Expected behavior: The command silently succeeds producing shadowsocks-libev.8
Actual behavior:
runtime error: file file:///usr/share/xml/docbook/xsl-stylesheets-1.79.1/manpages/tbl.xsl line 450 element text
xsltApplySequenceConstructor: A potential infinite template recursion was detected.
You can adjust xsltMaxDepth (--maxdepth) in order to raise the maximum number of nested template calls and variables/params (currently set to 3000).
Templates:
#0 name process.colspan
#1 name process.colspan
#2 name process.colspan
#3 name process.colspan
#4 name process.colspan
#5 name process.colspan
#6 name process.colspan
#7 name process.colspan
#8 name process.colspan
#9 name process.colspan
#10 name process.colspan
#11 name process.colspan
#12 name process.colspan
#13 name process.colspan
#14 name process.colspan
Variables:
#0
type
colspan
#1
colspan
#2
type
colspan
#3
colspan
#4
type
colspan
#5
colspan
#6
type
colspan
#7
colspan
#8
type
colspan
#9
colspan
#10
type
colspan
#11
colspan
#12
type
colspan
#13
colspan
#14
type
colspan
error: file /root/shadowsocks-libev.xml
xsltRunStylesheet : run failed
Note:
I tried increasing --maxdepth as suggested in the error output but that will result in a segfault.
This error doesn't occur with an older QEMU (I tested QEMU 2.12 on Ubuntu Cosmic) or different architectures on QEMU 3.1 (I tested x86, x86_64, arm, aarch64, s390x). Also it didn't help to use an older Alpine Linux (I tested v3.8). So I think it is caused by a bug in QEMU rather than the distro/package.
Could you try with QEMU 4.0, please? There was a bug/incompatibility between earlier QEMU and the Alpine Linux libc which we fixed in 4.0, and so this might be that bug (or some other bug we've already fixed).
@pmaydell
I'm willing to test. However, I encountered another bug introduced in 4.0 which even prevents me from installing xmlto. I'll preparing a bug report and will post it soon.
@pmaydell I just tested the latest commit in git master and still got the same error.
QEMU, like most open source projects, relies on contributors who have motivation, skills and available time to work on implementing particular features. They naturally tend to focus on features that result in the greatest benefit to their own use cases. Thus simply declaring that an open source project, must support something won't magically make it happen.
sorry for the previous post, posted the wrong text into this bug :-(
I meant to say:
The QEMU project is currently considering to move 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 older bugs to "Incomplete" now.
If you still think this bug report here is valid, then please switch the state back to "New" within the next 60 days, otherwise this report will be marked as "Expired". Or mark it as "Fix Released" if the problem has been solved with a newer version of QEMU already. Thank you and sorry for the inconvenience.
I just checked it out with QEMU 5.2.0 and it seems that the bug has been fixed.
|