Project

General

Profile

Bug #7423

Updated by Loïc Dachary about 10 years ago

While playing with "ECBackend pull request":https://github.com/ceph/ceph/pull/1228
<pre>
ceph version 0.76-491-gdd5ed4e (dd5ed4e444cea6ebdd8a11e4f2ebacf324228412)
1: (ceph::BackTrace::BackTrace(int)+0x2d) [0x1462859]
2: ./ceph-osd() [0x17048b8]
3: (()+0xfbb0) [0x7fa1e1259bb0]
4: (gsignal()+0x37) [0x7fa1df931f77]
5: (abort()+0x148) [0x7fa1df9355e8]
6: (__gnu_cxx::__verbose_terminate_handler()+0x155) [0x7fa1e023d6e5]
7: (()+0x5e856) [0x7fa1e023b856]
8: (()+0x5e883) [0x7fa1e023b883]
9: (()+0x5eaae) [0x7fa1e023baae]
10: (ceph::buffer::list::substr_of(ceph::buffer::list const&, unsigned int, unsigned int)+0x6d) [0x1850f55]
11: (CallClientContexts::finish(std::pair<RecoveryMessages*, ECBackend::read_result_t&>&)+0x3a8) [0x16d0ce8]
12: (GenContext<std::pair<RecoveryMessages*, ECBackend::read_result_t&>&>::complete(std::pair<RecoveryMessages*, ECBackend::read_result_t&>&)+0x2a) [0x16d52fc]
13: (ECBackend::complete_read_op(ECBackend::ReadOp&, RecoveryMessages*)+0xec) [0x16c74ec]
14: (ECBackend::handle_sub_read_reply(pg_shard_t, ECSubReadReply&, RecoveryMessages*)+0xc85) [0x16c7363]
15: (ECBackend::handle_message(std::tr1::shared_ptr<OpRequest>)+0x438) [0x16c4fc4]
16: (ReplicatedPG::do_request(std::tr1::shared_ptr<OpRequest>, ThreadPool::TPHandle&)+0x4c0) [0x159de44]
17: (OSD::dequeue_op(boost::intrusive_ptr<PG>, std::tr1::shared_ptr<OpRequest>, ThreadPool::TPHandle&)+0x36e) [0x128debe]
18: (OSD::OpWQ::_process(boost::intrusive_ptr<PG>, ThreadPool::TPHandle&)+0x23f) [0x128da55]
19: (ThreadPool::WorkQueueVal<std::pair<boost::intrusive_ptr<PG>, std::tr1::shared_ptr<OpRequest> >, boost::intrusive_ptr<PG> >::_void_process(void*, ThreadPool::TPHandle&)+0xd4) [0x133058e]
20: (ThreadPool::worker(ThreadPool::WorkThread*)+0x734) [0x183e440]
21: (ThreadPool::WorkThread::entry()+0x23) [0x18402b7]
22: (Thread::_entry_func(void*)+0x23) [0x1836b87]
23: (()+0x7f6e) [0x7fa1e1251f6e]
24: (clone()+0x6d) [0x7fa1df9f59cd]
NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
</pre>
Steps to reproduce: reproduce after compiling:
<pre>
rm -fr dev out ; mkdir -p dev ; LC_ALL=C MON=1 OSD=10 bash -x ./vstart.sh -d -n -X -l mon osd
./ceph osd crush rule create-erasure ecruleset erasure-code-k=2 erasure-code-m=1 erasure-code-ruleset-failure-domain=osd
./ceph osd pool create ecpool 12 12 erasure crush_ruleset=ecruleset erasure-code-k=2 erasure-code-m=1 erasure-code-ruleset-failure-domain=osd
./rados --pool ecpool put SOMETHING /etc/group
./rados --pool ecpool get SOMETHING /tmp/SOMETHING
</pre>

Back