1Index file: 2version: 2.1 3entries: 3 4current id: 1 5last crash: 1 6head 0: 0x90000002 7tail 0: 0x90000002 8size 0: 0x1 9head 1: 0x90000001 <---- 10tail 1: 0x90000000 11size 1: 0x2 12transaction: 0x0 13------------------------- 14 15Entry at 0xa0010002 16hash: 0x687d1422 17next entry: 0x0 18rankings: 0x90000000 19key length: 13 20key: "the first key" 21key addr: 0x0 22reuse count: 1 23---------- 24 25Rankings at 0x90000000 26next: 0x90000000 27prev: 0x90000001 28entry: 0xa0010002 29dirty: 0 30---------- 31 32Entry at 0xa0010003 33hash: 0x4a70620e 34next entry: 0x0 35rankings: 0x90000001 36key length: 14 37key: "the second key" 38key addr: 0x0 39reuse count: 0 <---- list 0 40---------- 41 42Rankings at 0x90000001 43next: 0x90000000 44prev: 0x90000001 <----- head 45entry: 0xa0010003 46dirty: 1 <----- This was actually inserted on list 1 47---------- 48 49Entry at 0xa0010004 50hash: 0x63909ecb 51next entry: 0x0 52rankings: 0x90000002 53key length: 14 54key: "some other key" 55key addr: 0x0 56reuse count: 0 57---------- 58 59Rankings at 0x90000002 60next: 0x90000002 61prev: 0x90000002 62entry: 0xa0010004 63dirty: 0 64---------- 65 66================================ 67 68Generated with: 69 70 SetNewEviction(); 71 SetMaxSize(20 * 1024 * 1024); 72 InitCache(); 73 const char* kName1 = "the first key"; 74 const char* kName2 = "the second key"; 75 disk_cache::Entry* entry; 76 ASSERT_EQ(net::OK, CreateEntry(kName1, &entry)); 77 entry->Close(); 78 ASSERT_EQ(net::OK, CreateEntry(kName2, &entry)); 79 entry->Close(); 80 ASSERT_EQ(net::OK, CreateEntry("some other key", &entry)); 81 entry->Close(); 82 83 ASSERT_EQ(net::OK, OpenEntry(kName1, &entry)); 84 entry->Close(); 85 86 ASSERT_EQ(net::OK, OpenEntry(kName2, &entry)); 87 88Set a breakpoint on that last line, and when the entry is moved from one list to another, crash the process: 89 90 rankings_->Remove(entry->rankings(), Rankings::NO_USE); 91 rankings_->Insert(entry->rankings(), false, Rankings::LOW_USE); 92 entry->entry()->Store(); <---- crash here 93