qemus pmemsave doesn't accept "/" in filename

Bug #543478 reported by Muelli on 2010-03-21
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Undecided
Unassigned
qemu-kvm (Ubuntu)
Low
Unassigned

Bug Description

Binary package hint: qemu-kvm

Please see my conversation with qemu:

(qemu) pmemsave
unexpected end of expression
(qemu) help pmemsave
pmemsave addr size file -- save to disk physical memory dump starting at 'addr' of size 'size'
(qemu) pmemsave 0 512M /tmp/qemu.mem
pmemsave: extraneous characters at the end of line
(qemu) pmemsave 0 512 /tmp/qemu.mem
invalid char in expression
(qemu) pmemsave 0 512 /tmp/qemu
invalid char in expression
(qemu) pmemsave 0 512 qemu.mem
(qemu) pmemsave 0 512M qemu.mem
pmemsave: extraneous characters at the end of line

Let me comment on each one of those:
(qemu) pmemsave
unexpected end of expression

I expected some sort of hint as to where to get more information. Maybe just a "Type ``help pmemsave'' to get syntax information" would be sufficient.

(qemu) help pmemsave
pmemsave addr size file -- save to disk physical memory dump starting at 'addr' of size 'size'

Nice. But an example would be nice. My proposal: "I.e.: pmemsave 0 1G /tmp/qemu.mem"

(qemu) pmemsave 0 512M /tmp/qemu.mem
pmemsave: extraneous characters at the end of line

eh. Would be nice if it told me *which* character was "extraneous" and what "extraneous" means. My proposal: "Couldn't parse character at position 23, please see help pmemsave for an example".

(qemu) pmemsave 0 512 /tmp/qemu.mem
invalid char in expression

Hm. Interesting. Again, would be nice if it printed me the offending character. My proposal: "Could not parse character at position 23, please see help pmemsave for an example".

(qemu) pmemsave 0 512 /tmp/qemu
invalid char in expression

Now I got rid of almost everything but it still doesn't work.

(qemu) pmemsave 0 512 qemu.mem

aha! No slashes?! Seriously?

(qemu) pmemsave 0 512M qemu.mem
pmemsave: extraneous characters at the end of line

And no "M" or "G" modifiers? If I want to dump 2GB then I'd have to calculate the number in bytes and paste that long string. I expected qemu to be able to parse the K, M, G suffixes.

Also, I'm wondering why it doesn't offer to dump all memory.

ProblemType: Bug
Architecture: amd64
CurrentDmesg:
 [150870.676062] kvm_intel: Unknown symbol kvm_vcpu_on_spin
 [150947.222923] cron[24260]: segfault at 0 ip (null) sp 00007fffe865eed8 error 14 in cron[400000+9000]
 [150947.224187] cron[24261]: segfault at 0 ip (null) sp 00007fffe865eed8 error 14 in cron[400000+9000]
Date: Sun Mar 21 15:03:13 2010
DistroRelease: Ubuntu 9.10
KvmCmdLine:
 UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
 muelli 23807 23806 13 239738 228464 0 14:54 pts/8 00:01:22 /usr/bin/kvm -S -M pc -m 512 -smp 1 -name vanilla_ubuntu -monitor stdio -boot c -drive file=/home/muelli/qemu/ubuntu8.10/ubuntu.img,if=ide,index=0,boot=on -drive file=,if=ide,media=cdrom,index=2 -net nic,model=rtl8139,macaddr=f0:00:BA:12:34:56 -net user,hostfwd=tcp::2223-:22,smb=/tmp/share -serial pty -snapshot
MachineType: LENOVO 766636G
Package: kvm 1:84+dfsg-0ubuntu16+0.11.0+0ubuntu6.3
PccardctlIdent:
 Socket 0:
   no product info available
PccardctlStatus:
 Socket 0:
   no card
ProcCmdLine: root=/dev/mapper/cryptroot source=UUID=9c3d5596-27c6-4fd5-bfcd-fa8eef6f1230 ro vdso32=0 quiet splash crashkernel=384M-2G:64M,2G-:128M
ProcVersionSignature: Ubuntu 2.6.32-16.24-generic
SourcePackage: qemu-kvm
Uname: Linux 2.6.32-16-generic x86_64
dmi.bios.date: 03/12/2009
dmi.bios.vendor: LENOVO
dmi.bios.version: 7NETC0WW (2.20 )
dmi.board.name: 766636G
dmi.board.vendor: LENOVO
dmi.board.version: Not Available
dmi.chassis.asset.tag: No Asset Information
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.version: Not Available
dmi.modalias: dmi:bvnLENOVO:bvr7NETC0WW(2.20):bd03/12/2009:svnLENOVO:pn766636G:pvrThinkPadX61:rvnLENOVO:rn766636G:rvrNotAvailable:cvnLENOVO:ct10:cvrNotAvailable:
dmi.product.name: 766636G
dmi.product.version: ThinkPad X61
dmi.sys.vendor: LENOVO

Chuck Short (zulcss) wrote :

Thank you for taking the time to report this bug and helping to make Ubuntu better. Please answer these questions:
1. Is this reproducible?
2. If so, what specific steps should we take to recreate this bug? Be as detailed as possible.
This will help us to find and resolve the problem.

Changed in qemu-kvm (Ubuntu):
importance: Undecided → Low
status: New → Incomplete

1. Yes
2. kvm /tmp/someimage.img -monitor stdio

Changed in qemu-kvm (Ubuntu):
status: Incomplete → New
Serge Hallyn (serge-hallyn) wrote :

Note that putting quotes around the filename lets you use '/'. I.e.
pmemsave 0x200 0x200 "/tmp/abab"

I assume this is a shortcoming in the parser, as the source code at first glance
claims to simply read a string. So I'm not sure how easily fixable it would be,
but it appears to be something for upstream to consider (whether to fix needing
to quote a filename, or add more precise help on error).

The '/' character is used to create special expressions if double quotes aren't used.

Changed in qemu:
status: New → Invalid
Changed in qemu-kvm (Ubuntu):
status: New → Invalid

Eh. Well. I'm a bit surprised that you won't allow forward slashes if you try to parse a path. It's actually a quite common character in the Linux world. Even other Unixes use it for separating components of a path. And since people use it so much, it should be as easy as possible to actually give a path to qemu. The excuse that it "is used to create special expressions" (which, btw?!) doesn't hold. I'm pretty confident that people use the '/' character to separate components of a path rather than doing "special expressions". Especially when a path the a file is expected! So if there are still "special expressions" needed in a path, it'd be better to select a different character.

Even if you don't agree on that, I really believe the user deserves some explanation along with the error message that is printed as I've pointed out in comment #0.

Changed in qemu-kvm (Ubuntu):
status: Invalid → New
Serge Hallyn (serge-hallyn) wrote :

Muelli: I agree that a help message about quoting pathnames would be
useful. Please work with the upstream mailing list to do so. A small
patch to qemu-monitor.hx should suffice, but you'll need to interact with
the <email address hidden> mailing list.

Changed in qemu-kvm (Ubuntu):
status: New → Incomplete

Here's a patch against qemu from git that prints the offending characters, helping the user to understand what's going on.

I can't deal with qemu-devel myself, it's way too noisy. But Ubuntu might want to take that patch or push it upstream.

tags: added: patch
Launchpad Janitor (janitor) wrote :

[Expired for qemu-kvm (Ubuntu) because there has been no activity for 60 days.]

Changed in qemu-kvm (Ubuntu):
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers