文本文件  |  166行  |  2.88 KB

Index file:
magic: c103cac3
version: 2.0
entries: 2                  <---- there is an extra entry on the lru.
total bytes: 47
last file number: 0
current id: 3
table length: 65536
last crash: 1
experiment: 0
head 0: 0x90000000
tail 0: 0x90000001
size 0: 0x0
head 1: 0x0
tail 1: 0x0
size 1: 0x0
head 2: 0x0
tail 2: 0x0
size 2: 0x0
head 3: 0x0
tail 3: 0x0
size 3: 0x0
head 4: 0x0
tail 4: 0x0
size 4: 0x0
transaction: 0x0
operation: 0
operation list: 0
-------------------------

Block file: data_0
magic: c104cac3
version: 2.0
file id: 0
next file id: 0
entry size: 36
current entries: 2
max entries: 1024
updating: 0
empty sz 1: 0
empty sz 2: 1
empty sz 3: 0
empty sz 4: 255
user 0: 0x0
user 1: 0x0
user 2: 0x0
user 3: 0x0
-------------------------

Block file: data_1
magic: c104cac3
version: 2.0
file id: 1
next file id: 0
entry size: 256
current entries: 4
max entries: 1024
updating: 0
empty sz 1: 0
empty sz 2: 1
empty sz 3: 0
empty sz 4: 254
user 0: 0x0
user 1: 0x0
user 2: 0x0
user 3: 0x0
-------------------------

Block file: data_2
magic: c104cac3
version: 2.0
file id: 2
next file id: 0
entry size: 1024
current entries: 0
max entries: 0
updating: 0
empty sz 1: 0
empty sz 2: 0
empty sz 3: 0
empty sz 4: 0
user 0: 0x0
user 1: 0x0
user 2: 0x0
user 3: 0x0
-------------------------

Block file: data_3
magic: c104cac3
version: 2.0
file id: 3
next file id: 0
entry size: 4096
current entries: 0
max entries: 0
updating: 0
empty sz 1: 0
empty sz 2: 0
empty sz 3: 0
empty sz 4: 0
user 0: 0x0
user 1: 0x0
user 2: 0x0
user 3: 0x0
-------------------------

Entry at 0xa0010002
hash: 0xc24ac438
next entry: 0x0
rankings: 0x90000000
key length: 13
key: "The first key"
key addr: 0x0
reuse count: 0
refetch count: 0
state: 0
data size 0: 20
data addr 0: 0xa0010005
data size 1: 0
data addr 1: 0x0
data size 2: 0
data addr 2: 0x0
data size 3: 0
data addr 3: 0x0
----------

Rankings at 0x90000000
next: 0x90000001
prev: 0x90000000
entry: 0xa0010002
dirty: 0
pointer: 0x0

================================

Generated with: (see steps on the bug 69135)

  SetMask(0x1);  // 2-entry table.
  SetMaxSize(0x3000);  // 12 kB.
  InitCache();

  std::string key1("The first key");
  std::string key2("The Second key");
  std::string key3("The third key");
  disk_cache::Entry* entry;

  ASSERT_EQ(net::OK, CreateEntry(key1, &entry));
  entry->Close();
  ASSERT_EQ(net::OK, CreateEntry(key2, &entry));
  entry->Close();
  ASSERT_EQ(net::OK, CreateEntry(key3, &entry));
  entry->Close();

  const int kSize = 20;
  ASSERT_EQ(net::OK, OpenEntry(key1, &entry));
  scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize);
  memset(buf->data(), 0, kSize);
  EXPECT_EQ(kSize, WriteData(entry, 0, 0, buf, kSize, false));
  entry->Close();

  ASSERT_EQ(net::OK, OpenEntry(key2, &entry));  <--- 1st crash.
  ASSERT_NE(net::OK, OpenEntry(key2, &entry));  <--- 2nd crash. *

  ASSERT_EQ(net::OK, DoomEntry(key3));

(*) and trick the code into deleting the dirty flag.