| Index file: |
| version: 2.1 |
| entries: 3 |
| current id: 1 |
| last crash: 1 |
| head 0: 0x90000002 |
| tail 0: 0x90000002 |
| size 0: 0x1 |
| head 1: 0x90000001 <---- |
| tail 1: 0x90000000 |
| size 1: 0x2 |
| transaction: 0x0 |
| ------------------------- |
| |
| Entry at 0xa0010002 |
| hash: 0x687d1422 |
| next entry: 0x0 |
| rankings: 0x90000000 |
| key length: 13 |
| key: "the first key" |
| key addr: 0x0 |
| reuse count: 1 |
| ---------- |
| |
| Rankings at 0x90000000 |
| next: 0x90000000 |
| prev: 0x90000001 |
| entry: 0xa0010002 |
| dirty: 0 |
| ---------- |
| |
| Entry at 0xa0010003 |
| hash: 0x4a70620e |
| next entry: 0x0 |
| rankings: 0x90000001 |
| key length: 14 |
| key: "the second key" |
| key addr: 0x0 |
| reuse count: 0 <---- list 0 |
| ---------- |
| |
| Rankings at 0x90000001 |
| next: 0x90000000 |
| prev: 0x90000001 <----- head |
| entry: 0xa0010003 |
| dirty: 1 <----- This was actually inserted on list 1 |
| ---------- |
| |
| Entry at 0xa0010004 |
| hash: 0x63909ecb |
| next entry: 0x0 |
| rankings: 0x90000002 |
| key length: 14 |
| key: "some other key" |
| key addr: 0x0 |
| reuse count: 0 |
| ---------- |
| |
| Rankings at 0x90000002 |
| next: 0x90000002 |
| prev: 0x90000002 |
| entry: 0xa0010004 |
| dirty: 0 |
| ---------- |
| |
| ================================ |
| |
| Generated with: |
| |
| SetNewEviction(); |
| SetMaxSize(20 * 1024 * 1024); |
| InitCache(); |
| const char* kName1 = "the first key"; |
| const char* kName2 = "the second key"; |
| disk_cache::Entry* entry; |
| ASSERT_EQ(net::OK, CreateEntry(kName1, &entry)); |
| entry->Close(); |
| ASSERT_EQ(net::OK, CreateEntry(kName2, &entry)); |
| entry->Close(); |
| ASSERT_EQ(net::OK, CreateEntry("some other key", &entry)); |
| entry->Close(); |
| |
| ASSERT_EQ(net::OK, OpenEntry(kName1, &entry)); |
| entry->Close(); |
| |
| ASSERT_EQ(net::OK, OpenEntry(kName2, &entry)); |
| |
| Set a breakpoint on that last line, and when the entry is moved from one list to another, crash the process: |
| |
| rankings_->Remove(entry->rankings(), Rankings::NO_USE); |
| rankings_->Insert(entry->rankings(), false, Rankings::LOW_USE); |
| entry->entry()->Store(); <---- crash here |