QEMU 3.1 makes libxslt to crash on ppc64

Bug #1818122 reported by DDoSolitary
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

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.

Tags: ppc
tags: added: ppc
Revision history for this message
Peter Maydell (pmaydell) wrote :

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).

Revision history for this message
DDoSolitary (ddosolitary) wrote :

@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.

Revision history for this message
DDoSolitary (ddosolitary) wrote :

@pmaydell I just tested the latest commit in git master and still got the same error.

Revision history for this message
Thomas Huth (th-huth) wrote :

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.

Revision history for this message
Thomas Huth (th-huth) wrote :

sorry for the previous post, posted the wrong text into this bug :-(

Revision history for this message
Thomas Huth (th-huth) wrote :

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.

Changed in qemu:
status: New → Incomplete
Revision history for this message
DDoSolitary (ddosolitary) wrote :

I just checked it out with QEMU 5.2.0 and it seems that the bug has been fixed.

Changed in qemu:
status: Incomplete → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.