Closed Bug 215089 Opened 22 years ago Closed 21 years ago

nsLocalFileOSX::MoveTo fails if no "Temporary Items" folder on volume [was: Bookmarks.html consistantly lost]

Categories

(SeaMonkey :: Bookmarks & History, defect)

PowerPC
macOS
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED FIXED
mozilla1.5final

People

(Reporter: llaughridge, Assigned: darin.moz)

References

Details

(4 keywords)

Attachments

(1 file)

User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.5b) Gecko/20030804 Build Identifier: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.5b) Gecko/20030804 Mozilla deletes the bookmarks.html file resulting in data loss. Bookmarking a page does not cause data to be written to the bookmarks.html file right away. It appears to be cached elsewhere. After bookmarking a page, Mozilla will delete bookmarks.html when the browser window is closed, and will not re-write the file until another browser window is opened. Quitting Mozilla when the bookmarks.html file is not present results in data loss. Reproducible: Always Steps to Reproduce: 1. Assume a bookmarks.html file exists in *.slt 2. Launch Mozilla - check that bookmarks.html exists 3. Add a bookmark. 4. Verify that bookmarks.html exists, and is the same size as before (the bookmark has not been written to the file). 5. Close the browser window 6. Verify that bookmarks.html no longer exists. 7. Check the Bookmarks menu - the entry still exists (cached?) 8. If you quit Mozilla now, the bookmarks will be lost! 9. Create a new browser window. 10. Verify that bookmarks.html has now been written, AND is larger than before reflecting the additional data from (3) above. 11. Repeat steps (4) to (6) to observe the same behaviour again. 12. If you quit Mozilla WITH the bookmarks.html file present, you have about a 2/3 chance that it will not be immediately deleted upon subsequent launch. Actual Results: Consistant and repeatable loss of bookmarks.html Expected Results: Mozilla should have handled bookmarks.html in a robust manner. The app should never be in a situation where bookmarks data is unwritten and only exists in cache. Both existing and new, clean profiles have been tested, with the same results. This has been occuring with clean installs of 10.2.[3|4|5|6] on G4 notebooks (12") and workstations (2x1.25GHz). It has happened with every build of mozilla from 1.4b --> the 3 August nightly. This occurs only on Mac OS X builds where the users $HOME is on a mounted NFS volume. It does not occur with profiles on HFS+ volumes. It does not occur with Solaris/SPARC or Linux/x86 builds with profiles on NFS volumes. I'm not saying that this is related to any specific Mozilla bug involving NFS. I'm simply reporting facts that I can observe and reproduce.
Flags: blocking1.5b?
unable to reproduce with latest trunk builds on OS X
I have the same problem. All recently added bookmarks are lost when mozilla is shut down improperly. Any way to fix this?
If 'trunk builds' == the 20 August nightly, then it is absolutely reproducible, still. Sorry.
Flags: blocking1.5?
This also happens with profiles in AFS (we symlink ~/Library into AFS), both netscape 7.1 and moz trunk. This is really annoying, and it didn't happen with CFM versions of moz.
Flags: blocking1.5b? → blocking1.5b-
Keywords: dataloss, regression
hmm... i have no mac, and am therefore not able to test this bug out, but the following code snipet from nsBookmarksService.cpp confuses me: NS_IMETHODIMP nsBookmarksService::Observe(...) { ... if (!nsCRT::strcmp(aTopic, "profile-before-change")) { // The profile has not changed yet. rv = Flush(); if (!nsCRT::strcmp(someData, NS_LITERAL_STRING("shutdown-cleanse").get())) { nsCOMPtr<nsIFile> bookmarksFile; rv = GetBookmarksFile(getter_AddRefs(bookmarksFile)); if (bookmarksFile) { bookmarksFile->Remove(PR_FALSE); } } } ... why in the world do we remove the bookmarks file here?
From what I see, shutdown-cleanse only occurs in unusual situations, in particular in response to a user requester in CProfileManager::DoLogout() in embedding/browser/powerplant/source/CProfileManager.cpp * "shutdown-persist" * The user is logging out and whatever data the observer stores * for the current profile should be released from memory and * saved to disk. * * "shutdown-cleanse" * The user is logging out and whatever data the observer stores * for the current profile should be released from memory and * deleted from disk. Without knowing exactly the content of the requester, I'm not sure why it would be invoked anyways. It certainly could use some more commenting. Not sure if this is the cause, but it's possible. I suspect this isn't the issue, and it's instead one with the logic to write new bookmarks files atomically, but it's worth checking.
Flags: blocking1.5? → blocking1.5+
Flags: blocking1.4.x?
I got an email from a user (Mike Breeze) with Win2000 and Netscape 7.1 that they have this problem too (or if not, a similar problem). OS->All Hardware->All
OS: MacOS X → All
Hardware: Macintosh → All
re comment 5 I don´t know, if this is relevant to this bug, but I made some observations: 1. switch to another profile or create a new one, open bookmarkmanager, and you see as name: Bookmarks for [old profilename] This is easily reproducible, don´t know, if a bug exists. 2. I´m using nightlies with my default profile, including mail. My default profile has NOT the standard Mozilla/Netscape name. Normally each of my older Mozillas is started with it´s own profile. I started Mozilla 1.0.2 with my default profile, tested a bug, then ended it. I started Mozilla Nightly, I think from a shortcut with profile name supplied, but I had a fresh profile, no bookmarks in the toolbar, no mail. While still running, I opened windows explorer, and made a copy of my default profile. I think, at the second restart of mozilla my old profile was in use again, no corrections necessary. I didn´t file a bug, as I´ve got to investigate this better. I never lost my bookmarks, since using 0.9.x
part 2 of my previous post is irrelevant, the shortcut had option -P"Profile-Name" instead of -P "Profile-Name", there was a space missing, so the profile wasn´t changed. Sorry for the spam.
using Len's machine, i'm able to reproduce this bug (thanks Len!)... now to figure this out...
i cannot seem to repro this bug using my debug seamonkey build under linux.
ok, i learned some more about what the problem is here: at shutdown, nsBookmarksService::Flush is getting called, and WriteBookmarks is getting called. the temp bookmarks file (bookmarks-1.html) is getting created; however, when we go to move bookmarks-1.html to bookmarks.html, we fail. we fail deep inside MoreFilesX.c in FSMoveRenameObjectUnicode (line 1389) with the error that there exists no "Temporary Items" folder on the specified volume. simply creating a folder in the user's home directory called "Temporary Items" makes this bug go away. now, i have no idea why we need to depend on the existence of the "Temporary Items" folder in order to simply move files around the file system. maybe we should "fix" this bug by having nsLocalFileOSX.cpp catch this error and do the fallback copy method of moving/renaming files. or maybe we can use some other method of moving/renaming files under OSX. conrad: do you have any suggestions? (btw: this bug results from folks storing their profiles on a NFS drive, and this particular bug is OSX only.) rjesup: since this bug has been isolated as a Mac OSX specific problem, i think we should really file a new bug for the WIN32 version.
Assignee: pierre_tmp → darin
OS: All → MacOS X
Hardware: All → Macintosh
Status: NEW → ASSIGNED
Summary: Bookmarks.html consistantly lost → nsLocalFileOSX::MoveTo fails if no "Temporary Items" folder on volume [was: Bookmarks.html consistantly lost]
Target Milestone: --- → mozilla1.5final
ok, more info... FindFolders(..., kTemporaryFolder, ...); is failing with the error -5000 (afpAccessDenied), which might just be another way of saying that the directory doesn't exist. might be wierd/out-of-place to catch this error in nsLocalFileOSX.cpp:MoveTo. maybe we should just always failover to the copy case?
Blocks: 166369
ok, more info: looks like newer versions of MoreFiles actually fixes this bug. in the changelog for MoreFilesX.c: <4> 8/22/02 JL [3016251] Changed FSMoveRenameObjectUnicode to not use the Temporary folder because it isn't available on NFS volumes. does anyone know where to get a more recent copy of MoreFiles?
ok, thanks to bryner for pointing me at the latest copy of MoreFilesX on apple's website. i'm going to verify that it fixes this bug.
ok, this patch fixes the problem (without requiring folks to create a "Temporary Items" folder).
Attachment #131085 - Flags: superreview?(bryner)
Attachment #131085 - Flags: review?(ccarlen)
Comment on attachment 131085 [details] [diff] [review] v1 patch : update to latest version of MoreFilesX Good find. r=ccarlen
Attachment #131085 - Flags: review?(ccarlen) → review+
Attachment #131085 - Flags: superreview?(bryner) → superreview+
Comment on attachment 131085 [details] [diff] [review] v1 patch : update to latest version of MoreFilesX requesting approval for 1.5 final. patch is simply to update our copy of MoreFilesX.
Attachment #131085 - Flags: approval1.5?
Comment on attachment 131085 [details] [diff] [review] v1 patch : update to latest version of MoreFilesX a=asa (on behalf of drivers) for checkin to Mozilla 1.5
Attachment #131085 - Flags: approval1.5? → approval1.5+
On behalf of myself, the (now 20 and counting) users at my company, and enterprise users everywhere: Thank You All Very Much, especially Darin. Now, on to 166369 (hopefully already fixed by this same patch), and 201291! I'll provide remote access to a G4 2x1.25 for anyone willing and able to get these knocked out before 1.5 final. Thanks again, Len IT Director Kitchen & Associates Architectural Services
fixed-on-trunk (for mozilla 1.5)
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Comment on attachment 131085 [details] [diff] [review] v1 patch : update to latest version of MoreFilesX we probably want this on the 1.4 branch as well.
Attachment #131085 - Flags: approval1.4.1?
Flags: blocking1.4.1? → blocking1.4.1-
Comment on attachment 131085 [details] [diff] [review] v1 patch : update to latest version of MoreFilesX too late for 1.4.1. if you'd like to see this in the next 1.4.x release please set the approval1.4.2? flag.
Attachment #131085 - Flags: approval1.4.1? → approval1.4.1-
Attachment #131085 - Flags: approval1.4.2?
*** Bug 219243 has been marked as a duplicate of this bug. ***
Keywords: fixed1.5
Comment on attachment 131085 [details] [diff] [review] v1 patch : update to latest version of MoreFilesX a=mkaply for 1.4.2
Attachment #131085 - Flags: approval1.4.2? → approval1.4.2+
fixed1.4.2
Keywords: fixed1.4.2
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: