pasting into ppc64 serial console kills qemu

Bug #1639322 reported by Michal Suchanek on 2016-11-04
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Thomas Huth

Bug Description

- run qemu-system-ppc64
- when X window appears press Ctrl+Alt+3
- paste any text longer than 16 characters

qemu-system-ppc64: /home/abuild/rpmbuild/BUILD/qemu-2.6.1/hw/char/spapr_vty.c:40: vty_receive: Assertion `(dev->in - dev->out) < 16' failed.
Aborted (core dumped)

Broken in SUSE Leap 42.2 and git 4eb28abd52d48657cff6ff45e8dbbbefe4dbb414

Tags: ppc Edit Tag help
Thomas Huth (th-huth) wrote :

What user interface are you using? VNC? SDL? GTK?

tags: added: ppc
Michal Suchanek (hramrach) wrote :

This is gtk interface.

However, the function on line 40 os spapr_vty.c looks really insane.

It asserts that it is not given more data to input in a ring buffer than is size of the buffer and then stuffs all the data in regardless of the amount of data already present.

It should probably loop or one of its callers but I did not find a decent comparable piece of code to cut and paste whatever callbacks are needed for the other side to consume the bytes.

Thomas Huth (th-huth) wrote :

OK, seems like you need to compile QEMU with CONFIG_VTE enabled (i.e. with the vte-devel packages installed before running configure) to get copy-n-paste support in the GTK interface, that's why I was initially not able to reproduce this issue.
Anyway, now I can trigger the assert(), too, and I've suggested a patch here:<email address hidden>

Changed in qemu:
assignee: nobody → Thomas Huth (th-huth)
status: New → Confirmed
importance: Undecided → Medium
Thomas Huth (th-huth) wrote :

FWIW, the crash should be fixed by this commit here:;a=commitdiff;h=7bacfd7f7289192c83330
(but we still need to fix the gtk side, too, to only send as much characters at once as the receiving side can take)

Thomas Huth (th-huth) on 2017-06-10
Changed in qemu:
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers