OLD | NEW |
| (Empty) |
1 Index file: | |
2 version: 2.1 | |
3 entries: 3 | |
4 current id: 1 | |
5 last crash: 1 | |
6 head 0: 0x90000002 | |
7 tail 0: 0x90000002 | |
8 size 0: 0x1 | |
9 head 1: 0x90000001 <---- | |
10 tail 1: 0x90000000 | |
11 size 1: 0x2 | |
12 transaction: 0x0 | |
13 ------------------------- | |
14 | |
15 Entry at 0xa0010002 | |
16 hash: 0x687d1422 | |
17 next entry: 0x0 | |
18 rankings: 0x90000000 | |
19 key length: 13 | |
20 key: "the first key" | |
21 key addr: 0x0 | |
22 reuse count: 1 | |
23 ---------- | |
24 | |
25 Rankings at 0x90000000 | |
26 next: 0x90000000 | |
27 prev: 0x90000001 | |
28 entry: 0xa0010002 | |
29 dirty: 0 | |
30 ---------- | |
31 | |
32 Entry at 0xa0010003 | |
33 hash: 0x4a70620e | |
34 next entry: 0x0 | |
35 rankings: 0x90000001 | |
36 key length: 14 | |
37 key: "the second key" | |
38 key addr: 0x0 | |
39 reuse count: 0 <---- list 0 | |
40 ---------- | |
41 | |
42 Rankings at 0x90000001 | |
43 next: 0x90000000 | |
44 prev: 0x90000001 <----- head | |
45 entry: 0xa0010003 | |
46 dirty: 1 <----- This was actually inserted on list 1 | |
47 ---------- | |
48 | |
49 Entry at 0xa0010004 | |
50 hash: 0x63909ecb | |
51 next entry: 0x0 | |
52 rankings: 0x90000002 | |
53 key length: 14 | |
54 key: "some other key" | |
55 key addr: 0x0 | |
56 reuse count: 0 | |
57 ---------- | |
58 | |
59 Rankings at 0x90000002 | |
60 next: 0x90000002 | |
61 prev: 0x90000002 | |
62 entry: 0xa0010004 | |
63 dirty: 0 | |
64 ---------- | |
65 | |
66 ================================ | |
67 | |
68 Generated 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 | |
88 Set 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 | |
OLD | NEW |