Firefox (and other Mozilla products) after ino64

Jeffrey Bouquet jbtakk at iherebuywisely.com
Thu Jun 1 00:01:02 UTC 2017



On Wed, 31 May 2017 23:27:16 +0200, Dimitry Andric <dim at FreeBSD.org> wrote:

> Hi,
> 
> Due to the recent ino64 update in 12.0-CURRENT, there have been some
> reports by Firefox port users about crashes.  While I personally have
> not experienced these crashes, as I immediately rebuilt all my ports
> from scratch after the ino64 update, I think can explain why the
> following combination is very likely to have problems:
> 
> * kernel+world after ino64
> * www/firefox package from before ino64
> 
> It is because Firefox's JavaScript engine is doing tricks to get at libc
> structures and functions (via an FFI mechanism), and several structure
> layouts and offsets are hardcoded into its engine at build time.
> 
> For instance, here is the place where the engine determines the offset
> of struct dirent's d_name field:
> 
>   https://hg.mozilla.org/mozilla-central/file/tip/dom/system/OSFileConstants.cpp#l648
> 
> Further down in the file, several offsets of fields in struct stats are
> similarly determined:
> 
>   https://hg.mozilla.org/mozilla-central/file/tip/dom/system/OSFileConstants.cpp#l677
> 
> Now, since ino64 changed quite a number of structure layouts, including
> struct dirent, struct stat, and others, such offsets determined in the
> past will no longer be valid!
> 
> It is pretty likely that Firefox will attempt to access these fields,
> finding bogus values, or simply reading invalid memory, and crashing
> because of this.  Or at the least, the behavior will be unstable.
> 
> This also applies to other Mozilla products, such as Thunderbird,
> SeaMonkey, and so on.  These should all be rebuilt from scratch under
> ino64.
> 
> -Dimitry


What of machines where for some reason ports do not always build? [ for instance, 
ones with past workarounds for a
failed installworld...  ]  that still are in critical use daily? And,or where the
system has been installed for so long without reinstall that some ports 
segfault unless 'pkg lock'  ... and not usually upgraded... and/or thus using
binaries from backup... 

  Are upstream repositories to have those [ browser, email]  ports?  For instance, here iridium I cannot get to build... 


More information about the freebsd-current mailing list