| 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. |