Skip to content

corruption_test fails #15

@cmumford

Description

@cmumford

Original issue 9 created by winwasher on 2011-06-19T09:56:51.000Z:

Hi. I have some problems installing leveldb.

I run make check and corruption_test test fails. Running it under gdb i get

(gdb) run
Starting program: /home/spyros/src/leveldb/corruption_test
[Thread debugging using libthread_db enabled]
==== Test CorruptionTest.Recovery

Program received signal SIGSEGV, Segmentation fault.
0x0805d4b2 in leveldb::SkipList<char const_, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual(char const_ const&, leveldb::SkipList<char const_, leveldb::MemTable::KeyComparator>::Node_*) const ()
(gdb) bt

 0 0x0805d4b2 in leveldb::SkipList<char const_, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual(char const_ const&, leveldb::SkipList<char const_, leveldb::MemTable::KeyComparator>::Node_*) const ()

 1 0x0805d5bc in leveldb::SkipList<char const_, leveldb::MemTable::KeyComparator>::Insert(char const_ const&) ()

 2 0x0805cf2a in leveldb::MemTable::Add(unsigned long long, leveldb::ValueType, leveldb::Slice const&, leveldb::Slice const&) ()

 3 0x08069779 in leveldb::(anonymous namespace)::MemTableInserter::Put(leveldb::Slice const&, leveldb::Slice const&) ()

 4 0x08069a9d in leveldb::WriteBatch::Iterate(leveldb::WriteBatch::Handler*) const ()

 5 0x08069b40 in leveldb::WriteBatchInternal::InsertInto(leveldb::WriteBatch const_, leveldb::MemTable_) ()

 6 0x0805685e in leveldb::DBImpl::Write(leveldb::WriteOptions const&, leveldb::WriteBatch*) ()

 7 0x0804f090 in leveldb::CorruptionTest::Build(int) ()

 8 0x0804cd6a in leveldb::_Test_Recovery::_Run() ()

 9 0x0805053a in leveldb::_Test_Recovery::_RunIt() ()

 10 0x08074b4e in leveldb::test::RunAllTests() ()

 11 0x0804a84b in main ()

I get an analogous error if i run this minimal snippet

int
main(int argc, char* argv[])
{
leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status s = leveldb::DB::Open(options, "/home/spyros/src/async/leveldb/keystore", &db);
leveldb::WriteOptions wopts;
wopts.sync = true;
if (s.ok()) s = db->Put(wopts, "Hello", "World");
std::string val;
if (s.ok()) s = db->Get(leveldb::ReadOptions(), "Hello", &val);
if (s.ok())
std::cerr << "Value of 'Hello' is " << val << std::endl;
else
std::cerr << "DB error: " << s.ToString() << std::endl;
delete db;
}

the gdb output in this case is
(gdb) run
Starting program: /home/spyros/src/async/minimal
[Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
0x08056cd2 in leveldb::SkipList<char const_, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual(char const_ const&, leveldb::SkipList<char const_, leveldb::MemTable::KeyComparator>::Node_*) const ()
(gdb) bt

 0 0x08056cd2 in leveldb::SkipList<char const_, leveldb::MemTable::KeyComparator>::FindGreaterOrEqual(char const_ const&, leveldb::SkipList<char const_, leveldb::MemTable::KeyComparator>::Node_*) const ()

 1 0x08056d9e in leveldb::MemTableIterator::Seek(leveldb::Slice const&) ()

 2 0x08053da1 in leveldb::(anonymous namespace)::DBIter::Seek(leveldb::Slice const&) ()

 3 0x0804df82 in leveldb::DBImpl::Get(leveldb::ReadOptions const&, leveldb::Slice const&, std::string*) ()

 4 0x0804a4d3 in main ()

I use ubuntu 10.04 LTS 32-bit gcc 4.4.3 and gdb 7.1, leveldb revision 31

Any suggestions for this setup?

Thank you
Spyros

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions