Project

General

Profile

Actions

Bug #5469

closed

qemu-io: segfault when tried IO with invalid arguments

Added by Tamilarasi muthamizhan almost 11 years ago. Updated about 10 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
Target version:
-
% Done:

0%

Source:
Q/A
Tags:
Backport:
Regression:
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

tested this on rhel 6.3 and rhel6.4

tried qemu-io to perform IO on the rbd image by writing in a pattern and reading it back ina different pattern, but the issue seems to be with the length used while reading.

[ubuntu@mira099 x86_64]$ sudo qemu-io
qemu-io> aio_read -P 0x3 1 1
no file open, try 'help open'
qemu-io> open rbd:rbd/img1
qemu-io> aio_write -P 0x2 1k 1k
qemu-io> aio_read -P 0x3 1 2
offset 1 is not sector aligned
qemu-io> aio_read -P 0x3 0 1
length argument 1 is not sector aligned
osdc/Striper.cc: In function 'static void Striper::file_to_extents(CephContext*, const char*, ceph_file_layout*, uint64_t, uint64_t, std::map<object_t, std::vector<ObjectExtent, std::allocator<ObjectExtent> >, std::less<object_t>, std::allocator<std::pair<const object_t, std::vector<ObjectExtent, std::allocator<ObjectExtent> > > > >&, uint64_t)' thread 7f21524b6760 time 2013-06-26 18:50:36.008929
osdc/Striper.cc: 49: FAILED assert(len > 0)
 ceph version 0.61.4-29-gccb3dd5 (ccb3dd5ad5533ca4e9b656b4e3df31025a5f2017)
 1: (Striper::file_to_extents(CephContext*, char const*, ceph_file_layout*, unsigned long, unsigned long, std::map<object_t, std::vector<ObjectExtent, std::allocator<ObjectExtent> >, std::less<object_t>, std::allocator<std::pair<object_t const, std::vector<ObjectExtent, std::allocator<ObjectExtent> > > > >&, unsigned long)+0x1403) [0x7f2151363c73]
 2: (librbd::aio_read(librbd::ImageCtx*, std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > > const&, char*, ceph::buffer::list*, librbd::AioCompletion*)+0x2a5) [0x7f215132d5d5]
 3: (librbd::aio_read(librbd::ImageCtx*, unsigned long, unsigned long, char*, ceph::buffer::list*, librbd::AioCompletion*)+0xa2) [0x7f215132e1c2]
 4: (()+0x35e9e) [0x7f2152507e9e]
 5: (()+0x36020) [0x7f2152508020]
 6: (()+0x12fd5) [0x7f21524e4fd5]
 7: (()+0x13c02) [0x7f21524e5c02]
 NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
terminate called after throwing an instance of 'ceph::FailedAssertion'

Actions #1

Updated by Bram Pieters over 10 years ago

I'm having a simular issue atm:

char device redirected to /dev/pts/2
xen be: qdisk-768: error: unknown operation (255)
xen be: qdisk-832: error: unknown operation (255)
osdc/Striper.cc: In function 'static void Striper::file_to_extents(CephContext*, const char*, ceph_file_layout*, uint64_t, uint64_t, uint64_t, std::map<object_t, std::vector<ObjectExtent> >&, uint64_t)' thread 7f8adcdd1900 time 2013-11-15 13:42:36.834329
osdc/Striper.cc: 50: FAILED assert(len > 0)
ceph version 0.70 (e3bb0656d92e74ead0342ae696039a51170fe941)
1: (Striper::file_to_extents(CephContext*, char const*, ceph_file_layout*, unsigned long, unsigned long, unsigned long, std::map<object_t, std::vector<ObjectExtent, std::allocator<ObjectExtent> >, std::less<object_t>, std::allocator<std::pair<object_t const, std::vector<ObjectExtent, std::allocator<ObjectExtent> > > > >&, unsigned long)+0x1a5c) [0x7f8adc1a1c1c]
2: (librbd::aio_read(librbd::ImageCtx*, std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > > const&, char*, ceph::buffer::list*, librbd::AioCompletion*)+0x15d) [0x7f8adc16b0cd]
3: (librbd::aio_read(librbd::ImageCtx*, unsigned long, unsigned long, char*, ceph::buffer::list*, librbd::AioCompletion*)+0x84) [0x7f8adc16bac4]
4: (()+0xa9f72) [0x7f8adcf99f72]
5: (()+0xaa120) [0x7f8adcf9a120]
6: (()+0x8a54e) [0x7f8adcf7a54e]
7: (()+0x90f4e) [0x7f8adcf80f4e]
NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
terminate called after throwing an instance of 'ceph::FailedAssertion'

Actions #2

Updated by Tamilarasi muthamizhan over 10 years ago

  • Priority changed from Normal to High
Actions #3

Updated by Sage Weil about 10 years ago

  • Priority changed from High to Urgent
Actions #4

Updated by Sage Weil about 10 years ago

  • Priority changed from Urgent to High
Actions #5

Updated by Sage Weil about 10 years ago

  • Priority changed from High to Urgent
Actions #6

Updated by Pawel Stefanski about 10 years ago

we've got the same assertion failure today on 0.67.3. It's rare and random.

osdc/Striper.cc: In function 'static void Striper::file_to_extents(CephContext*, const char*, ceph_file_layout*, uint64_t, uint64_t, uint64_t, std::map<object_t, std::vector<ObjectExtent> >&, uint64_t)' thread 7f8f0affd700 time 2014-03-2
0 17:00:27.883733
osdc/Striper.cc: 50: FAILED assert(len > 0)
ceph version 0.67.3 (408cd61584c72c0d97b774b3d8f95c6b1b06341a)
1: (Striper::file_to_extents(CephContext*, char const*, ceph_file_layout*, unsigned long, unsigned long, unsigned long, std::map<object_t, std::vector<ObjectExtent, std::allocator<ObjectExtent> >, std::less<object_t>, std::allocator<std
::pair<object_t const, std::vector<ObjectExtent, std::allocator<ObjectExtent> > > > >&, unsigned long)+0xa38) [0xd1f7d8]
2: (librbd::aio_read(librbd::ImageCtx*, std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > > const&, char*, ceph::buffer::list*, librbd::AioCompletion*)+0x1e8) [0xf04e58]
3: (librbd::read(librbd::ImageCtx*, std::vector<std::pair<unsigned long, unsigned long>, std::allocator<std::pair<unsigned long, unsigned long> > > const&, char*, ceph::buffer::list*)+0xcb) [0xf055eb]
4: (librbd::read(librbd::ImageCtx*, unsigned long, unsigned long, char*)+0x103) [0xf058c3]
5: (rbd::object::read(unsigned long, unsigned long, char*) const+0x4c) [0x917f68]
6: ./trinity-hypervisor() [0x88ba1b]
7: (std::function<long ()>::operator()() const+0x26) [0xa3f816]
8: (trinity::io_thread::worker_function()+0x1d5) [0xa40357]
9: (std::thread::_Impl<std::_Bind_simple<std::_Bind<std::_Mem_fn<void (trinity::io_thread::*)()> (trinity::io_thread*)> ()> >::_M_run()+0x3d) [0xa3f40d]
10: (execute_native_thread_routine()+0x20) [0x1034930]
11: (()+0x8ec6) [0x7f8f1df4bec6]
12: (clone()+0x6d) [0x7f8f1d78b9cd]
NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.

Actions #7

Updated by Josh Durgin about 10 years ago

  • Status changed from New to Fix Under Review
Actions #8

Updated by Sage Weil about 10 years ago

  • Status changed from Fix Under Review to Resolved
Actions

Also available in: Atom PDF