Bug 106632

Summary: [msdosfs] gimp destroys files on fat32 upon opening
Product: Base System Reporter: Dominic Fandrey <LoN_Kamikaze>
Component: kernAssignee: Tom Rhodes <trhodes>
Status: Closed Overcome By Events    
Severity: Affects Only Me CC: jpaetzel
Priority: Normal    
Version: 6.2-PRERELEASE   
Hardware: Any   
OS: Any   

Description Dominic Fandrey 2006-12-12 08:00:18 UTC
FreeBSD sometimes destroys .xcf files on fat32 paritions when opening them with the gimp. I entered a bug report, but strace shows that it's a FreeBSD problem, since gimp operates entirely in read only mode.

It is difficult to reproduce, but I've got the strace output and a copy of an affected file (as well as a backup of the unbroken original). All those are fairly large, so to share them I'd need somewhere to upload them.

More information can be found here:
http://bugzilla.gnome.org/show_bug.cgi?id=376687

Fix: 

Don't use Fat32.
How-To-Repeat: 1. I create an .xcf file with the gimp and save it.
2. Afterwards I create a backup of the file.
3. I close it and open it again. Sometimes I get the following message:
 XCF: This file is corrupt!  I could not even salvage any partial image data
from it.
4. I copy the backup over the original.
5. Opening it works.
Comment 1 Remko Lodder freebsd_committer freebsd_triage 2006-12-12 18:33:22 UTC
Responsible Changed
From-To: freebsd-i386->freebsd-ports-bugs

this sounds more like something the ports team.
Comment 2 Dominic Fandrey 2006-12-12 19:39:12 UTC
Actually it has to be a fat32 bug, because gimp operates entirely in read only mode.
It's also supplied bogus information by the OS. Just look at the file size.

# grep -n stage4.xcf trace-original
88492:stat("/mnt/msdos/vault/graphics/space/starfield01/stage4.xcf", {st_mode=0624, st_size=667297867660179424, ...}) = 0
88494:stat("/mnt/msdos/vault/graphics/space/starfield01/stage4.xcf", {st_mode=0624, st_size=667297867660179424, ...}) = 0
88952:open("/mnt/msdos/vault/graphics/space/starfield01/stage4.xcf", O_RDONLY) = 5
88956:access("/mnt/msdos/vault/graphics/space/starfield01/stage4.xcf", F_OK) = 0
88957:stat("/mnt/msdos/vault/graphics/space/starfield01/stage4.xcf", {st_mode=0, st_size=0, ...}) = 0
88958:access("/mnt/msdos/vault/graphics/space/starfield01/stage4.xcf", R_OK) = 0
88985:open("/mnt/msdos/vault/graphics/space/starfield01/stage4.xcf", O_RDONLY) = 5
Comment 3 Mark Linimon freebsd_committer freebsd_triage 2006-12-12 20:08:25 UTC
Responsible Changed
From-To: freebsd-ports-bugs->gnome

Over to maintainer(s).
Comment 4 Jeremy Messenger freebsd_committer freebsd_triage 2006-12-22 02:33:26 UTC
Responsible Changed
From-To: gnome->freebsd-bugs

The submitter suggests that it is not a ports bug, but a FAT32 bug.
Comment 5 Remko Lodder freebsd_committer freebsd_triage 2006-12-29 20:44:44 UTC
Responsible Changed
From-To: freebsd-bugs->trhodes

assign to tom
Comment 6 Dominic Fandrey 2007-11-17 09:05:33 UTC
This is still an issue for me. I work around this by copying everything to UFS
before I work on it and copying it back afterwards. Kinda annoying. Sometimes
I forget to, open a file and it's lost. Yay for backups.