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>