Closed Bug 711914 Opened 14 years ago Closed 14 years ago

Fetching bookmarks information during onBeforeItemRemove may break the bookmarks cache

Categories

(Firefox :: Bookmarks & History, defect)

8 Branch
x86
Windows Vista
defect
Not set
normal

Tracking

()

RESOLVED FIXED
Firefox 12

People

(Reporter: latif, Assigned: mak)

Details

Attachments

(1 file, 1 obsolete file)

Attached file test.js (obsolete) —
User Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7 Steps to reproduce: I called removeFolderChildren on a folder that contained a child folder. The child folder contained a single bookmark. Note: This bug reports the same issue as Bug 675416. The fix for bug 675416 is not comprehensive and fails in some cases. Actual results: After deleting the parent folder I was able to retrieve the information of the child folder. It is also possible to create additional bookmarks so that one of the new bookmarks reuses the id of the deleted folder and the bookmark service returns the information of the deleted folder in place of the newly created bookmark. Expected results: Firefox should have thrown an exception instead.
Attachment #582754 - Attachment mime type: application/octet-stream → text/plain
thanks for filing the bug, taking to check what happens.
Assignee: nobody → mak77
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Attached patch patch v1.0Splinter Review
The bug is caused by the calling order in the internal loop of RemoveFolderchildren. We can't change ordering in that loop since it may cause unwanted regressions. So I decided than rather than addressing each single possible failure point it's better to increase checks on the cache. This makes the cache stronger by tracking items in the critical path, while registered they won't be added to the cache. Also asserts that each END has a corresponding BEGIN by checking the hash contents.
Attachment #582754 - Attachment is obsolete: true
Attachment #586981 - Flags: review?(dietrich)
Ps: the existing assertion was catching this failure, but we didn't have a test leveraging that path. That's why I think this different approach is better, it enforces the condition.
Attachment #586981 - Flags: review?(dietrich) → review+
Flags: in-testsuite+
Target Milestone: --- → Firefox 12
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: