Project

General

Profile

Bug #58005

release-built osd failed to mkfs

Added by Xuehan Xu 3 months ago. Updated about 1 month ago.

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

0%

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

Description

It seems that when "seastar::need_preempt" is true, "crimson::do_for_each" will turn into a long recursive function. And since we are letting crimson-osd use full disk space, the number of segments can be very large, which can make the program stack overflow by the recursive "crimson::do_for_each". May need to re-implement "crimson::do_for_each/repeat"

#4  0x0000000001820560 in FatalSignal::signaled(int, siginfo_t const&) ()
#5  0x00000000018212db in FatalSignal::signal_entry(int, siginfo_t*, void*) ()
#6  <signal handler called>
#7  0x00000000020cfe3b in crimson::os::seastore::segment_manager::block::BlockSegmentManager::read(crimson::os::seastore::paddr_t, unsigned long, ceph::buffer::v15_2_0::ptr&) ()
#8  0x000000000254d533 in crimson::os::seastore::Device::read(crimson::os::seastore::paddr_t, unsigned long) ()
#9  0x00000000025415ae in crimson::os::seastore::SegmentManagerGroup::read_segment_header(crimson::os::seastore::segment_id_t) ()
#10 0x000000000219cbba in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#11 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#12 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#13 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#14 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#15 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#16 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#17 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#18 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#19 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#20 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#21 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#22 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#23 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#24 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#25 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#26 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#27 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#28 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#29 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#30 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#31 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#32 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#33 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#34 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#35 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#36 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#37 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#38 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()
#39 0x000000000219d3df in auto crimson::do_for_each<crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}>(crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::segment_map_t<crimson::os::seastore::segment_info_t>::iterator<true>, crimson::os::seastore::SegmentCleaner::mount()::{lambda(auto:1&)#1}) ()

History

#1 Updated by Xuehan Xu 3 months ago

  • Description updated (diff)

#2 Updated by Yingxin Cheng about 2 months ago

  • Status changed from New to Resolved

#3 Updated by Xuehan Xu about 1 month ago

  • Pull request ID set to 48932

Also available in: Atom PDF