CEPH filesystem development
 help / color / mirror / Atom feed
From: Andre Noll <maan@systemlinux.org>
To: Sage Weil <sage@newdream.net>
Cc: ceph-devel@vger.kernel.org
Subject: Re: osd: terminate called after throwing an instance of 'std::bad_alloc'
Date: Fri, 4 Jun 2010 10:45:21 +0200	[thread overview]
Message-ID: <20100604084521.GO1211@skl-net.de> (raw)
In-Reply-To: <Pine.LNX.4.64.1006021115240.1269@cobra.newdream.net>

[-- Attachment #1: Type: text/plain, Size: 1752 bytes --]

On Wed, Jun 02, 11:19, Sage Weil Wrote
> Okay, it looks like there is a corrupt PG log.  Can you tar up the 
> $osd_data/current/meta directory, and then 'f 8' and 'p /x info.pgid' from 
> gdb (to figure out which pg it's loading)?

It's in decode_nohead():

	...
	Program received signal SIGABRT, Aborted.
	[Switching to Thread 0x7ff115b566f0 (LWP 5045)]
	0x00007ff1146e9095 in raise () from /lib/libc.so.6
	(gdb) f 8
	#8  0x0000000000540920 in PG::read_log (this=0x7ff1104b6460,
	store=<value optimized out>) at ./include/cstring.h:120
	120         _data = new char[_len + 1];
	(gdb) p /x info.pgid
	$1 = {v = {preferred = {v = 0xffff}, ps = {v = 0x1bf}, pool = {v = 0x0}}}

> There is an open bug for pglog corruption, but I haven't been able to 
> identify where it's actually happening.

How can one determine the pg from the above output? BTW: cosd has
/var/ceph/osd6/current/commit_op_seq open and this file contains the
number 1103797. Does that tell us anything?

> Generally speaking, once you identify the bad pg, you can just delete the 
> offending pglog and data directory from the osd, restart, and it will 
> recover.  Provided you haven't corrupted both copies of the same pg on 
> different osds.  Or more often than not, there is more than one corrupted 
> log, and you have to repeat the process a few times.

That's valuable information, thanks. It should probably be documented
somewhere.

> This is probably the sort of corruption that we should log but not crash 
> on, so that the osd can continue to start up (and just skip the offending 
> pg).  I'll open an issue for that in the tracker.

Thanks
Andre
-- 
The only person who always got his work done by Friday was Robinson Crusoe

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2010-06-04  8:45 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-31 12:51 osd: terminate called after throwing an instance of 'std::bad_alloc' Andre Noll
2010-06-01 17:28 ` Sage Weil
2010-06-02  8:10   ` Andre Noll
2010-06-02 18:19     ` Sage Weil
2010-06-04  8:45       ` Andre Noll [this message]
2010-06-04 16:48         ` Sage Weil
2010-06-07  8:07           ` Andre Noll
     [not found]             ` <20100607080932.GV1211@skl-net.de>
     [not found]               ` <Pine.LNX.4.64.1006071016470.20365@cobra.newdream.net>
     [not found]                 ` <20100608122838.GA9152@skl-net.de>
2010-06-09  5:54                   ` Sage Weil
2010-06-09  8:16                     ` Andre Noll
2010-06-09 17:29                       ` Sage Weil
2010-06-14  8:48                         ` Andre Noll

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100604084521.GO1211@skl-net.de \
    --to=maan@systemlinux.org \
    --cc=ceph-devel@vger.kernel.org \
    --cc=sage@newdream.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox