New issue
Advanced search Search tips

Issue 905799 link

Starred by 3 users

Issue metadata

Status: Verified
Owner:
Closed: Nov 16
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

`vmc export <vm name> <file name>` causes concierge to assert

Project Member Reported by za...@chromium.org, Nov 15

Issue description

To reproduce, try to export a vm disk image in crosh:

crosh> vmc export ctest hello4
[INFO:client.cc(567)] Exporting disk image to /home/user/b31b12048ca363eed0af2b28453fece9fefb9fcb/Downloads/hello4.qcow2
[ERROR:object_proxy.cc(580)] Failed to call method: org.chromium.VmConcierge.ExportDiskImage: object_path= /org/chromium/VmConcierge: org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying
[ERROR:client.cc(582)] Failed to send dbus message to concierge service

The relevant output from of /var/log/messages

2018-11-15T19:16:43.796534+00:00 INFO vm_concierge[12817]: Received ExportDiskImage request
2018-11-15T19:16:57.734556+00:00 CRIT vm_concierge[12817]: Check failed: 0 == IGNORE_EINTR(close(fd)). : Bad file descriptor#012/usr/lib64/libbase-core-395517.so(_ZN4base5debug10StackTraceC1Ev+0x13) [0x7bbae08c9a13]#012
2018-11-15T19:16:57.735241+00:00 INFO kernel: [598518.415794] traps: vm_concierge[12817] general protection ip:7bbadff7ddb3 sp:7fff83aed820 error:0 in libc-2.23.so[7bbadff48000+1a1000

/etc/lsb_release:
CHROMEOS_RELEASE_APPID={495DCB07-E19A-4D7D-99B9-4710011A65B1}
CHROMEOS_BOARD_APPID={495DCB07-E19A-4D7D-99B9-4710011A65B1}
CHROMEOS_CANARY_APPID={90F229CE-83E2-4FAF-8479-E368A34938B1}
DEVICETYPE=CHROMEBOOK
CHROMEOS_RELEASE_BUILDER_PATH=nami-paladin/R72-11242.0.0-rc1
CHROMEOS_RELEASE_BOARD=nami
CHROMEOS_RELEASE_BRANCH_NUMBER=0
CHROMEOS_RELEASE_TRACK=testimage-channel
CHROMEOS_RELEASE_DESCRIPTION=11242.0.0-rc1 (Continuous Builder - Builder: N/A) nami
CHROMEOS_RELEASE_NAME=Chromium OS
CHROMEOS_AUSERVER=http://swarm-cros-390.c.chromeos-bot.internal:8080/update
CHROMEOS_ARC_VERSION=5116395
CHROMEOS_ARC_ANDROID_SDK_VERSION=25
GOOGLE_RELEASE=11242.0.0-rc1
CHROMEOS_DEVSERVER=http://swarm-cros-390.c.chromeos-bot.internal:8080
CHROMEOS_RELEASE_BUILD_NUMBER=11242
CHROMEOS_RELEASE_CHROME_MILESTONE=72
CHROMEOS_RELEASE_PATCH_NUMBER=0-rc1
CHROMEOS_RELEASE_BUILD_TYPE=Continuous Builder - Builder: N/A
CHROMEOS_RELEASE_UNIBUILD=1
CHROMEOS_RELEASE_VERSION=11242.0.0-rc1

 
Owner: za...@chromium.org
Status: Started (was: Available)
The `convert_to_qcow` function in `qcow_utils` was taking ownership of the FDs given to it, and closing them when the function returned. However, concierge assumed it retained ownership and would free the FDs a second time.
Project Member

Comment 2 by bugdroid1@chromium.org, Nov 16

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform/crosvm/+/94923406ae4af8139a6ee8fcb3c265c26ae69835

commit 94923406ae4af8139a6ee8fcb3c265c26ae69835
Author: Zach Reizner <zachr@google.com>
Date: Fri Nov 16 13:01:42 2018

qcow_utils: do not close given fds in `convert_to_*` functions

The `convert_to_*` functions take ownership of the passed FDs even
though they should not according to the function's contract. This change
clones the passed FDs so that the caller can retain ownership of its
FDs.

This change also wraps most of the implementations in catch_unwind so
that panics do not unwind past FFI boundaries, which is undefined
behavior.

BUG= chromium:905799 
TEST=in crosh: `vmc export <vm name> <file name>`

Change-Id: I2f65ebff51243675d0854574d8fd02cec1b237a4
Reviewed-on: https://chromium-review.googlesource.com/1338501
Commit-Ready: Zach Reizner <zachr@chromium.org>
Tested-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>

[modify] https://crrev.com/94923406ae4af8139a6ee8fcb3c265c26ae69835/qcow_utils/src/qcow_utils.rs

Status: Verified (was: Started)

Sign in to add a comment