166 lines
2.9 KiB
Plaintext
166 lines
2.9 KiB
Plaintext
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 = base::MakeRefCounted<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. |