Bugzilla Automation <[email protected]> has asked freebsd-gecko (Nobody) <[email protected]> for maintainer-feedback: Bug 291122: www/firefox: initial window is 500x120 pixels; profile's xulstore.json is getting absurd values written on exit https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291122
--- Description --- I started noticing the behavior a couple of weeks ago, and after my usual daily updates didn't seem to help, I finally poked around enough to determine that the profile's xulstore.json file is being rewritten as firefox exits (as expected), but with seriously bogus values. My environment (as of today): FreeBSD g1-120.catwhisker.org 14.3-STABLE FreeBSD 14.3-STABLE #602 stable/14-n272914-fa1337393b84: Thu Nov 20 11:45:05 UTC 2025 [email protected]:/common/S1/obj/usr/src/amd64.amd64/sys/CANARY amd64 1403506 1403506 Installed ports are all updated as of the ports tree at main-n726256-41c4cade8808. In particular, firefox is: g1-120(14.3-S)[15] pkg info -o firefox\* firefox-145.0.1,2 www/firefox The window manager I am using is www/piewm (based on an early version of tvtwm, which is what I had been using in SunOS ca. 1993 or so, and continued when I started using FreeBSD in 1998, until I discovered piewm a few years later). After starting firefox, and manually re-sizing the window so it's actually usable, the xulstore.json file looks like: {"chrome://browser/content/browser.xhtml":{"main-window":{"screenX":"0","screen Y":"-1080","width":"1380","height":"1051","sizemode":"normal"},"sidebar-title": {"value":"Bookmarks"},"toolbar-menubar":{"autohide":"-moz-missing\n"}},"chrome: //browser/content/places/bookmarksSidebar.xhtml":{"place:CqewroxEONFH0b8ILWSXYA ==":{"open":"true"},"place:Zb6FJ+zKg63cESydVyD3sQ==":{"open":"true"},"place:U22 3EZSYgg2CPFnv/86HPg==":{"open":"true"}}} Feeding it to jq, we get: { "chrome://browser/content/browser.xhtml": { "main-window": { "screenX": "0", "screenY": "-1080", "width": "1380", "height": "1051", "sizemode": "normal" }, "sidebar-title": { "value": "Bookmarks" }, "toolbar-menubar": { "autohide": "-moz-missing\n" } }, "chrome://browser/content/places/bookmarksSidebar.xhtml": { "place:CqewroxEONFH0b8ILWSXYA==": { "open": "true" }, "place:Zb6FJ+zKg63cESydVyD3sQ==": { "open": "true" }, "place:U223EZSYgg2CPFnv/86HPg==": { "open": "true" } } } The important part for this issue is the chrome://browser/content/browser.xhtml{main-window} part: that has the window geometry. When I quit firefox (gracefully), that file gets overwritten, and the geometry part gets: "main-window": { "screenX": "1", "screenY": "-2", "width": "0", "height": "0", "sizemode": "normal" }, I managed to "catch it in the act" via ktrace: 55049 BgIOThreadPool #7 RET _umtx_op 0 55049 BgIOThreadPool #7 CALL access(0x1672d93d0f08,0<F_OK>) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default/xulstore.json" 55049 BgIOThreadPool #7 RET access 0 55049 BgIOThreadPool #7 CALL mkdir(0x1672c0d4aa48,0755<S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXO TH>) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default" 55049 BgIOThreadPool #7 RET mkdir -1 errno 17 File exists 55049 BgIOThreadPool #7 CALL openat(AT_FDCWD,0x1672d09f0008,0x601<O_WRONLY|O_CREAT|O_TRUNC>,0666<S_IRUSR|S_I WUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH>) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default/xulstore.json.tmp" 55049 BgIOThreadPool #7 RET openat 92/0x5c 55049 BgIOThreadPool #7 CALL write(0x5c,0x1672c0d30408,0x20c) 55049 BgIOThreadPool #7 GIO fd 92 wrote 524 bytes "{"chrome://browser/content/browser.xhtml":{"main-window":{"screenX":"1","scree nY":"-2","width":"0","height":"0","sizemode":"normal"},"sidebar-title":{"value" :"Bookmarks"},"toolbar-menubar":{"autohide":"-moz-missing\\n"}},"chrome://brows er/content/places/bookmarksSidebar.xhtml":{"place:CqewroxEONFH0b8ILWSX\ YA==":{"open":"true"},"place:Zb6FJ+zKg63cESydVyD3sQ==":{"open":"true"},"place:U 223EZSYgg2CPFnv/86HPg==":{"open":"true"},"place:5RxX05RMJ2IXs2jwAFaagA==":{"ope n":"true"},"place:QOzH1kYvvT/L8EpVMDI82w==":{"open":"true"}}}" 55049 BgIOThreadPool #7 RET write 524/0x20c 55049 BgIOThreadPool #7 CALL close(0x5c) 55049 BgIOThreadPool #7 RET close 0 55049 BgIOThreadPool #7 CALL fstatat(AT_FDCWD,0x1672d93d0f08,0x1672c9fdd510,0) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default/xulstore.json" 55049 BgIOThreadPool #7 STRU struct stat {dev=168, ino=14025176, mode=0100644, nlink=1, uid=1001, gid=0, rdev=18446744073709551615, atime=1763690823.309314000, mtime=1763690823.309347000, ctime=1763690823.309387000, birthtime=1763690823.309313000, size=533, blksize=32768, blocks=8, flags=0x0 } 55049 BgIOThreadPool #7 RET fstatat 0 55049 BgIOThreadPool #7 CALL access(0x1672d09f0008,0<F_OK>) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default/xulstore.json.tmp" 55049 BgIOThreadPool #7 RET access 0 55049 BgIOThreadPool #7 CALL fstatat(AT_FDCWD,0x1672d93d0f08,0x1672c9fdd510,0) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default/xulstore.json" 55049 BgIOThreadPool #7 STRU struct stat {dev=168, ino=14025176, mode=0100644, nlink=1, uid=1001, gid=0, rdev=18446744073709551615, atime=1763690823.309314000, mtime=1763690823.309347000, ctime=1763690823.309387000, birthtime=1763690823.309313000, size=533, blksize=32768, blocks=8, flags=0x0 } 55049 BgIOThreadPool #7 RET fstatat 0 55049 BgIOThreadPool #7 CALL fstatat(AT_FDCWD,0x1672d09f0008,0x1672cee67d10,0) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default/xulstore.json.tmp" 55049 BgIOThreadPool #7 STRU struct stat {dev=168, ino=14025128, mode=0100644, nlink=1, uid=1001, gid=0, rdev=18446744073709551615, atime=1763692594.914967000, mtime=1763692594.914987000, ctime=1763692594.914987000, birthtime=1763692594.914967000, size=524, blksize=32768, blocks=8, flags=0x0 } 55049 BgIOThreadPool #7 RET fstatat 0 55049 BgIOThreadPool #7 CALL access(0x1672c0d4aa48,0<F_OK>) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default" 55049 BgIOThreadPool #7 RET access 0 55049 BgIOThreadPool #7 CALL fstatat(AT_FDCWD,0x1672c0d4aa48,0x1672cc9d0910,0) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default" 55049 BgIOThreadPool #7 STRU struct stat {dev=168, ino=14027414, mode=040700, nlink=27, uid=1001, gid=0, rdev=18446744073709551615, atime=1762955742, mtime=1763692594.914972000, ctime=1763692594.914972000, birthtime=1762920197, size=4096, blksize=32768, blocks=8, flags=0x0 } 55049 BgIOThreadPool #7 RET fstatat 0 55049 BgIOThreadPool #7 CALL rename(0x1672d09f0008,0xdd07d4801fc) 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default/xulstore.json.tmp" 55049 BgIOThreadPool #7 NAMI "/home/david/.mozilla/firefox/ikr1zr7v.default/xulstore.json" 55049 BgIOThreadPool #7 RET rename 0 So I *think* this is probably a bug in firefox, rather than FreeBSD, but I'm not at all familiar with the process of reporting bugs there... and there is at least a plausibility(?) that there's some weird interaction between firefox and ancient concepts like "window managers" (vs. "Desktop Environments") that someone may have overlooked, because... who would use such an archaic thing in this day and age? And writing this up might at least give someone else who is experiencing the issue a fighting chance. And yes, I even tried moving ~/.mozilla/firefox aside (wholesale), but the symptoms persisted. In the mean time, I have saved "good" copies of the xulstore.json file & written a script to run before firing up firefox, which restores the file from the saved copy. Which is a bit klunky, but at least it makes firefox's handling of windows no worse than it historically has been. If I should be reporting this to Mozilla, I'd appreciate a wee bit of guidance. Thanks!
